Перейти к содержимому


пспользование в фильтре MySQL пользовательских ф-ции


Сообщений в теме: 2

#1 Tonik

    Участник

  • Пользователи
  • PipPip
  • 16 сообщений

Отправлено 25 Апрель 2014 - 11:45

Добрый день! создаю фильтр в режиме эксперта. Хочу получить все записи, у которых с момента `Дата п/п` прошло больше 3 бизнес дней.
Написано что в режиме эксперта можно использовать SQL. Я определил в mysql ф-цию TOTAL_WEEKDAYS
Когда я использую ее в консоле, запрос работает.

Когда я пытаюсь определить фильтр
TOTAL_WEEKDAYS(`Дата п/п`, curdate()) >= 3
мне выдает при сохранение фильтра
Ошибка в значении фильтра. Проверьте корректность задания условий.

При этом фильтр
DATEDIFF(`Дата п/п`, curdate()) >= 3
прекрасно сохраняется

Внимание вопрос:

В фильтрах действительно можно использовать SQL в любой форме или все же вы там как то парсите его и проверяете на допустимые ф-ции?
Если еще упростить вопрос - могу ли я в фильтрах использовать определенную на уровне MySQL пользовательскую ф-цию?


Если UDF в фильтрах использовать нельзя, то подскажите как мне сделать фильтр для записей, у которых с даты %какое то поле тут% прошло боле N рабочих дней? Текущий фильтр считает просто дни, что не совсем то.

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 25 Апрель 2014 - 14:20

Цитата

В фильтрах действительно можно использовать SQL в любой форме или все же вы там как то парсите его и проверяете на допустимые ф-ции?

Да, в любой. Никак не парсим, кроме замены `внешнее имя` на `внутреннее имя`. Проверка просто присоединяет к стандартному "SELECT * FROM таблица WHERE " ваше выражение в эксперте.

Цитата

Если еще упростить вопрос - могу ли я в фильтрах использовать определенную на уровне MySQL пользовательскую ф-цию?

Без понятия честно говоря, это скорее вопрос к модулю MySQL в PHP, чем к нам. Попробуйте создать полностью свой запрос с данной функцией в тестовом скрипте и проверьте работу.

#3 Tonik

    Участник

  • Пользователи
  • PipPip
  • 16 сообщений

Отправлено 28 Апрель 2014 - 12:50

Принял. Спасибо за направление. Вероятно значит ошибка в чем то другом - подебажу с включенным логом запросов





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных