Работа фильтра по полю дата
Создал новый тип поля — дата в типе контента объявления. Вторая ветка.
Хочу чтоб был поиск по этой дате. Например, если у меня дата в объявлении указана пользователем 10.08.2016, ввожу в фильтр дату днем раньше 09.08.2016- то мне выдает результат тоже 10.08.2016. То есть должно было не показать эту дату. В чем могут быть причины? В системном поле "дата" фильтр выдает результат нормально. То есть фильтр ищет дату след. дня тоже включительно. Где это поправить?
Попробуйте отключить в настройках контента "Фильтр по диапазону"
Пробовал и так и так, все равно включительно следующий день попадает в фильтр
В типе контента "Объявления" есть поле "Дата публикации". По ней фильтр работает четко.
Вы удалили поле с датой публикации и создали поле "просто дата"?
Специально создал новое поле дата и заметил странную вещь. Задаю в поиске до 9-го, а оно всё равно ищет до 10-го.
SELECT COUNT(i.id) AS COUNT FROM cms_con_board i FORCE INDEX (date_pub) WHERE (i.is_parent_hidden IS NULL) AND (i.dat >= '2016-08-01') AND (i.dat <= '2016-08-10') AND (i.is_approved = '1') AND (i.is_pub = '1')
А почему по дате публикации работает? Поле точно того же типа, я даже опции оттуда скопировал в новое поле в базе. И все равно диверсия.
Это даже не диверсия. Это мистика какая-то…
А патамуштаLoadырь,
А почему
Поставьте галочку "Показывать время" и жизнь наладится. Вообще это магия цифры 0. Сутки это не 14.08.2016 00:00 — 15.08.2016 00:00, а 14.08.2016 00:00 — 14.08.2016 59:59 + бесконечность стремящаяся к единице.
+ бесконечность стремящаяся к единице
А в этом что то естьбесконечность стремящаяся к единице.
В двоичном коде всего два состояния 0 — ничего и 1 — что то, почему бы бесконечности не стремиться к чему то, то есть 1?
Не в показе времени дело, как выяснилось.Поставьте галочку "Показывать время" и жизнь наладится.
Как-то оно странно из формы ввода в фильтре отправляет значение.
Вполне нормально, ведь вы вводите только дату 09.08.2016 с временем 00:00, а фильтр заставляете показать данные за период с 09.08.2016 00:00 до 09.08.2016 23:59:59,9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.....Как-то оно странно из формы ввода в фильтре отправляет значение.
Так вот при округлении вы получите дату 09.08.2016 24:00:00, что php расценивается как 10.08.2016 00:00:00
Если не показывать время, то да есть некая "диверсия" в фильтрации, что по диапазону, что без диапазона. Можно добавить в 61 и 71 строках после вот этого многозадачного явления
добавьте минус нечто такое чтобы стало как-то так
60*60*24
Благодарствую. Всегда вам плюс.
П.С. Мне нужно было новое поле дата, чтоб пользователь вбивал данные. А не дата добавления.
Если не показывать время, то да есть некая "диверсия" в фильтрации, что по диапазону, что без диапазона. Можно добавить в 61 и 71 строках после вот этого многозадачного явления
добавьте минус нечто такое чтобы стало как-то так
60*60*24
Наткнулся сейчас на такой баг. Убираю в свойствах поля "фильтр по диапазону" не ищет, начиная с 10 числа. С 01 по 09 находит. В фильтре по диапазону тоже все даты ищет. Подскажите как быть с этим?