#251 closed баг (fixed)
Ошибка фильтрации конференций по времени
Reported by: | alx | Owned by: | dimag |
---|---|---|---|
Priority: | minor | Milestone: | 2 очередь |
Component: | ПО MC04-Dispatcher. Пульт диспетчера/техника | Keywords: | filter, audio records |
Cc: | san |
Description
При указании в панели "Фильтр переговоров" границ времени с 26.07.2016 14:02 по 26.07.2016 14:05 применение фильтра не дает ни одного результата, в то время как в базе данных существует запись о конференции, проходившей с 26.07.2016 14:01 по 26.07.2016 14:06. Очевидно, эта конференция должна была пройти через фильтр.
Change History (10)
follow-up: 3 comment:1 by , 8 years ago
comment:2 by , 8 years ago
Keywords: | audio records added |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:3 by , 8 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Replying to san:
Похоже на так и не пофиксеный 3-й пункт #224
Фильтр по времени не срабатывает если совпадает дата "от" и дата "до"
Нет, в моем условии "от" и "до" разные.
Replying to dimag:
Хм... У меня в r287 по-прежнему не работает - нет результата.
Дима, а у Вас в r287 работает? При задании указанный мной границ фильтр показывает конференцию?
comment:5 by , 8 years ago
Хм... В моем тесте программа делает такой SQL запрос:
SELECT id, starttime, endtime, xml, conference, has_record FROM cdr WHERE (starttime) BETWEEN STR_TO_DATE('2016.07.26 14:02:00', '%Y.%m.%d %H:%i:%s') AND STR_TO_DATE('2016.07.26 14:05:59', '%Y.%m.%d %H:%i:%s') OR (endtime) BETWEEN STR_TO_DATE('2016.07.26 14:02:00', '%Y.%m.%d %H:%i:%s') AND STR_TO_DATE('2016.07.26 14:05:59', '%Y.%m.%d %H:%i:%s') ORDER by starttime
Дима, объясните, пожалуйста, каким чудом у Вас отображается 1 конференция, если, как нетрудно проверить, сервер возвращает на этот запрос пустой результат (empty set)....
Теперь давайте рассуждать чисто логически. Есть 4 параметра - время начала и конца конференции (S, E) и два времени, заданные параметрами фильтра (s, e). Для простоты будет считать, что они не совпадают. Очевидно, возможно 6 случаев взаимного расположения этих времен:
- S E s e
- S s E e
- S s e E
- s S E e
- s S e E
- s e S E
Пол логике фильтрации, очевидно, конференция должна проходить через фильтр в случаях 2, 3, 4, 5. Указанные в описании тикета параметры фильтра подпадают под случай 3.
Теперь давайте проанализируем условие запроса. Насколько я вижу, запрашиваются все конференции, Время начала которых попадает между заданными нами временами, или время окончания которых попадает между заданными нами временами. Очевидно, что случай 3 этому условию не удовлетворяет, так как ни время начала конференции (S), ни время окончания (E) не лежит между временами, заданными в фильтре.
Следовательно, условие в SQL запросе неверное, и его требуется исправить.
follow-ups: 7 8 comment:6 by , 8 years ago
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
r294.
Спасибо что заметили, оказалось что мой запрос возвращает не все конференции какие удовлетворяют условиям.
comment:7 by , 8 years ago
Replying to dimag:
оказалось что мой запрос возвращает не все конференции какие удовлетворяют условиям.
"Не все" одну? :) :) :)
Условию в описании тикета удовлетворяет ровно одна конференция... :)
comment:8 by , 8 years ago
comment:9 by , 8 years ago
Так как ответа не последовало, считаю, что разумной причины для использования такого условия поиска записей нет. Создан ticket:312.
Похоже на так и не пофиксеный 3-й пункт #224