Поле дата в типе контента

Работа фильтра по полю дата

#1 12 августа 2016 в 09:39
Приветствую.
Создал новый тип поля — дата в типе контента объявления. Вторая ветка.

Хочу чтоб был поиск по этой дате. Например, если у меня дата в объявлении указана пользователем 10.08.2016, ввожу в фильтр дату днем раньше 09.08.2016- то мне выдает результат тоже 10.08.2016. То есть должно было не показать эту дату. В чем могут быть причины? В системном поле "дата" фильтр выдает результат нормально. То есть фильтр ищет дату след. дня тоже включительно. Где это поправить?
#2 12 августа 2016 в 10:53
Попробуйте отключить в настройках контента "Фильтр по диапазону"
#3 12 августа 2016 в 12:27


Попробуйте отключить в настройках контента "Фильтр по диапазону"

Т-34

Пробовал и так и так, все равно включительно следующий день попадает в фильтр
#4 13 августа 2016 в 16:53
Никто не знает как это сделать ил же в каком месте посмотреть
#5 15 августа 2016 в 15:10
Не очень понял, что Вы делаете.
В типе контента "Объявления" есть поле "Дата публикации". По ней фильтр работает четко.
Вы удалили поле с датой публикации и создали поле "просто дата"?

Специально создал новое поле дата и заметил странную вещь. Задаю в поиске до 9-го, а оно всё равно ищет до 10-го.
  1. SELECT COUNT(i.id) AS COUNT
  2. FROM cms_con_board i
  3. FORCE INDEX (date_pub)
  4. 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')
#6 15 августа 2016 в 16:28
Если не показывать время, то да есть некая "диверсия" в фильтрации, что по диапазону, что без диапазона. Можно добавить в 61 и 71 строках после вот этого многозадачного явления
  1. 60*60*24
добавьте минус нечто такое чтобы стало как-то так
  1. strtotime($value['to'])+60*60*24 - ($this->getOption('show_time') ? 0 : 1))
#7 15 августа 2016 в 20:28
Loadырь,
А почему по дате публикации работает? Поле точно того же типа, я даже опции оттуда скопировал в новое поле в базе. И все равно диверсия.
Это даже не диверсия. Это мистика какая-то…
#8 15 августа 2016 в 21:01

Loadырь,
А почему

Ris
А патамушта laugh
Поставьте галочку "Показывать время" и жизнь наладится. Вообще это магия цифры 0. Сутки это не 14.08.2016 00:00 — 15.08.2016 00:00, а 14.08.2016 00:00 — 14.08.2016 59:59 + бесконечность стремящаяся к единице.
#9 15 августа 2016 в 21:07

+ бесконечность стремящаяся к единице

Loadырь
look
#10 16 августа 2016 в 09:09
Олег Васильевич я, когда меня посещают великие думы, я и не такое могу сообщить smoke
#11 16 августа 2016 в 10:01

бесконечность стремящаяся к единице.

Loadырь
А в этом что то есть smile
В двоичном коде всего два состояния 0 — ничего и 1 — что то, почему бы бесконечности не стремиться к чему то, то есть 1? smile
#12 16 августа 2016 в 11:21

Поставьте галочку "Показывать время" и жизнь наладится.

Loadырь
Не в показе времени дело, как выяснилось.
Как-то оно странно из формы ввода в фильтре отправляет значение.
а в базе выборка:
Согласитесь, что 9 и 10 всё же разные числа.
#13 16 августа 2016 в 11:55

Как-то оно странно из формы ввода в фильтре отправляет значение.

Ris
Вполне нормально, ведь вы вводите только дату 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
#14 16 августа 2016 в 20:54


Если не показывать время, то да есть некая "диверсия" в фильтрации, что по диапазону, что без диапазона. Можно добавить в 61 и 71 строках после вот этого многозадачного явления

  1. 60*60*24
добавьте минус нечто такое чтобы стало как-то так
  1. strtotime($value['to'])+60*60*24 - ($this->getOption('show_time') ? 0 : 1))

Loadырь

Благодарствую. Всегда вам плюс.
П.С. Мне нужно было новое поле дата, чтоб пользователь вбивал данные. А не дата добавления.
#15 18 августа 2016 в 17:48


Если не показывать время, то да есть некая "диверсия" в фильтрации, что по диапазону, что без диапазона. Можно добавить в 61 и 71 строках после вот этого многозадачного явления

  1. 60*60*24
добавьте минус нечто такое чтобы стало как-то так
  1. strtotime($value['to'])+60*60*24 - ($this->getOption('show_time') ? 0 : 1))

Loadырь

Наткнулся сейчас на такой баг. Убираю в свойствах поля "фильтр по диапазону" не ищет, начиная с 10 числа. С 01 по 09 находит. В фильтре по диапазону тоже все даты ищет. Подскажите как быть с этим?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.