Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как поправить sql запрос?

Как поправить sql запрос?


     18.05.2017    Общие вопросы по PHP, Модули, MySQL    1050

вопрос
Почему sql запрос
 SELECT * FROM dle_post  WHERE '2017-05-18' >= STR_TO_DATE(SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  'date_from|', -1 ) ,  '||', 1 ), '%Y-%m-%d')  AND '2017-05-18' <= STR_TO_DATE(SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  'date_to|', -1 ) ,  '||', 1 ), '%Y-%m-%d') and '2017-05-18' BETWEEN STR_TO_DATE('2017-05-18', '%Y-%m-%d')   AND STR_TO_DATE('2017-06-01', '%Y-%m-%d') 


не захватывает новости где date_from 2017-05-20 а date_to 2017-05-21 или date_from 2017-05-19 и date_to 2017-05-19 , то есть в тех где сегодняшней даты нет в диапазоне с date_from до date_to но если date_from 2017-05-17 и date_to 2017-05-25 то всё норм
date_from и date_to это доп поля, dle 11.3

Ответа пока нет


6 комментариев

lutskboy
Эксперт

lutskboy - 19 мая 2017 12:48 -

может не в тему но зачем вот ето
and '2017-05-18' BETWEEN STR_TO_DATE('2017-05-18', '%Y-%m-%d')   AND STR_TO_DATE('2017-06-01', '%Y-%m-%d') 

ето какой то лишний кусок кода. который возвращает 1

kennius
Юзер

kennius - 19 мая 2017 12:50 -

Да это не обязательно, я проверял меняется ли количество выводимой информации.

lutskboy
Эксперт

lutskboy - 19 мая 2017 12:57 -

сам запрос правильный. скиньте пример того что в xfields
и зачем переводить дату если она и так в нужном формате %Y-%m-%d

kennius
Юзер

kennius - 19 мая 2017 14:15 -

Такая запись появится
date_from|2017-05-10||date_to|2017-05-22

а вот так уже не показывает
date_from|2017-05-20||date_to|2017-05-25

lutskboy
Эксперт

lutskboy - 19 мая 2017 15:29 -

а почему она должна показывать если условие '2017-05-18' >=2017-05-20 не верно

kennius
Юзер

kennius - 19 мая 2017 20:38 -

Помогите пожалуйста как правильно составить запрос, я не могу сообразить

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх