Что то не пойму как работает фильтр в наборах по полю дата, нужно для подобия календаря событий
Вот например как вывести записи, которые пройдут в течении 7 дней? В записи использую тип поля "Дата" при добавлении записи указываю нужную дату (09.04.2018), в наборах выполняю фильтр по полю "Дата" и ставлю не старше 7 дней, но в списке показывается еще и запись с значением 07.06.2018
Включите отладку и запрос в базу, который этот датасет выводит, гляньте. Может там будет какое-то объяснение феномену?
Ну в отладке выводятся запросы sql и запрос, в котором есть что-то типа FORCE INDEX (системное имя вашего датасета) и надо посмотреть.не совсем понял)
SELECT COUNT( i.id ) as count
FROM que_con_poster i
FORCE INDEX FOR ORDER BY (dataset_week)
WHERE (i.dateof >= DATE_SUB(NOW(), INTERVAL 7 DAY)) AND (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_deleted IS NULL) AND (i.is_pub = '1')
Просто как то нигде инфы нету по настройке и использованию этого поля в наборах…
На вид все правильно.
Вот это вот условие фильтрует записи, где dateof (кстати, что это за поле? сами добавляли?) больше или равно текущая дата + 7 дней
i.dateof >= DATE_SUB(NOW(), INTERVAL 7 DAY)
Угу, это поле типа "Дата"dateof
Формат:
2018-04-09 13:00:00
Выполните этот ваш запрос
в phpmyadmin и посмотрите, будут ли там записи, которые там быть не должны и каким образом они туда попали.
5
5 — количество всех записей.
Вообще не пойму, какие настройки есть у этого поля для фильтра. или в каком видео туда значения вводить?
А есть там кроме счетчика запрос sql, где FORCE INDEX FOR ORDER BY (dataset_week) фигурирует?
FROM que_con_poster i
FORCE INDEX FOR ORDER BY (dataset_week)
WHERE (i.dateof >= DATE_SUB(NOW(), INTERVAL 7 DAY)) AND (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_deleted IS NULL) AND (i.is_pub = '1')
SELECT i.*, u.nickname as user_nickname, f.title as folder_title
FROM que_con_poster i
FORCE INDEX FOR ORDER BY (dataset_week)
INNER JOIN que_users as u FORCE INDEX (PRIMARY) ON u.id = i.user_id
LEFT JOIN que_content_folders as f ON f.id = i.folder_id
WHERE (i.dateof >= DATE_SUB(NOW(), INTERVAL 7 DAY)) AND (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_deleted IS NULL) AND (i.is_pub = '1')
ORDER BY i.date_pub desc
LIMIT 0, 15
Вот это вот… может я все таки что то не так в настройках делаю..)
Да что там можно не так сделать, когда вот это вот должно отсекать все старше неделиВот это вот… может я все таки что то не так в настройках делаю..)
WHERE (i.dateof >= DATE_SUB(NOW(), INTERVAL 7 DAY))
SELECT i.*, u.nickname AS user_nickname, f.title AS folder_title FROM que_con_poster i FORCE INDEX FOR ORDER BY (dataset_week) INNER JOIN que_users AS u FORCE INDEX (PRIMARY) ON u.id = i.user_id LEFT JOIN que_content_folders AS f ON f.id = i.folder_id WHERE (i.dateof >= DATE_SUB(NOW(), INTERVAL 7 DAY)) AND (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_deleted IS NULL) AND (i.is_pub = '1') ORDER BY i.date_pub DESC LIMIT 0, 15
запись за седьмое июня.
Я ж думаю Вы правильно меня поняли. что я выполняю сортировку не по полю дата создания, а по другому (созданному). время проведения так сказать. Может это поле не может так сортировать?
Но в запросе ясно видно, что он должен выводить.Может это поле не может так сортировать?
WHERE (i.dateof >= DATE_SUB(NOW(), INTERVAL 7 DAY))
Еще раз прошу выполнить команду
SELECT i.*, u.nickname AS user_nickname, f.title AS folder_title FROM que_con_poster i FORCE INDEX FOR ORDER BY (dataset_week) INNER JOIN que_users AS u FORCE INDEX (PRIMARY) ON u.id = i.user_id LEFT JOIN que_content_folders AS f ON f.id = i.folder_id WHERE (i.dateof >= DATE_SUB(NOW(), INTERVAL 7 DAY)) AND (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_deleted IS NULL) AND (i.is_pub = '1') ORDER BY i.date_pub DESC LIMIT 0, 15
И посмотрите, что содержится в dateof в результатах запроса.
2018-06-07 тоже есть…