Доброго времени!
Что то не пойму как работает фильтр в наборах по полю дата, нужно для подобия календаря событий
Вот например как вывести записи, которые пройдут в течении 7 дней? В записи использую тип поля "Дата" при добавлении записи указываю нужную дату (09.04.2018), в наборах выполняю фильтр по полю "Дата" и ставлю не старше 7 дней, но в списке показывается еще и запись с значением 07.06.2018
InstantCMS 2.X
#1
7 апреля 2018 в 22:58
#2
9 апреля 2018 в 23:27
Jestik,
Включите отладку и запрос в базу, который этот датасет выводит, гляньте. Может там будет какое-то объяснение феномену?
Включите отладку и запрос в базу, который этот датасет выводит, гляньте. Может там будет какое-то объяснение феномену?
#3
12 апреля 2018 в 12:46
Ris, не совсем понял) Мне кажется дело в моей криворукости) Но вроде все варианты перебрал а нужного результата не получил
Сегодня в 03:43
#4
12 апреля 2018 в 13:04
Ну в отладке выводятся запросы sql и запрос, в котором есть что-то типа FORCE INDEX (системное имя вашего датасета) и надо посмотреть.не совсем понял)
#5
12 апреля 2018 в 14:17
Ris,
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')
Просто как то нигде инфы нету по настройке и использованию этого поля в наборах…
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')
Просто как то нигде инфы нету по настройке и использованию этого поля в наборах…
#6
12 апреля 2018 в 16:51
Jestik,
На вид все правильно.
Вот это вот условие фильтрует записи, где dateof (кстати, что это за поле? сами добавляли?) больше или равно текущая дата + 7 дней
Проверьте эту запись, которая от 07.06.2018. Может там эта dateof в каком-то неправильном формате записана? Попробуйте её вручную переписать.
На вид все правильно.
Вот это вот условие фильтрует записи, где dateof (кстати, что это за поле? сами добавляли?) больше или равно текущая дата + 7 дней
i.dateof >= DATE_SUB(NOW(), INTERVAL 7 DAY)
#7
12 апреля 2018 в 18:32
Угу, это поле типа "Дата"dateof
Формат:
2018-04-09 13:00:00
#8
12 апреля 2018 в 20:39
Jestik,
Выполните этот ваш запрос
в phpmyadmin и посмотрите, будут ли там записи, которые там быть не должны и каким образом они туда попали.
Выполните этот ваш запрос
в phpmyadmin и посмотрите, будут ли там записи, которые там быть не должны и каким образом они туда попали.
#9
12 апреля 2018 в 21:16
count
5
5 — количество всех записей.
Вообще не пойму, какие настройки есть у этого поля для фильтра. или в каком видео туда значения вводить?
5
5 — количество всех записей.
Вообще не пойму, какие настройки есть у этого поля для фильтра. или в каком видео туда значения вводить?
#10
12 апреля 2018 в 22:59
Jestik,
А есть там кроме счетчика запрос sql, где FORCE INDEX FOR ORDER BY (dataset_week) фигурирует?
А есть там кроме счетчика запрос sql, где FORCE INDEX FOR ORDER BY (dataset_week) фигурирует?
#11
12 апреля 2018 в 23:18
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')
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
Вот это вот… может я все таки что то не так в настройках делаю..)
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
Вот это вот… может я все таки что то не так в настройках делаю..)
#12
12 апреля 2018 в 23:32
Да что там можно не так сделать, когда вот это вот должно отсекать все старше неделиВот это вот… может я все таки что то не так в настройках делаю..)
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
#13
13 апреля 2018 в 17:46
Ris, Да так же выводит все записи.
Я ж думаю Вы правильно меня поняли. что я выполняю сортировку не по полю дата создания, а по другому (созданному). время проведения так сказать. Может это поле не может так сортировать?
запись за седьмое июня.
Я ж думаю Вы правильно меня поняли. что я выполняю сортировку не по полю дата создания, а по другому (созданному). время проведения так сказать. Может это поле не может так сортировать?
#14
13 апреля 2018 в 19: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 в результатах запроса.
#15
13 апреля 2018 в 19:22
2018-06-07 тоже есть…