преобразовать NOW () в dmY - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь сравнить даты в этом формате: 'дд-мм-гггг', которые на самом деле являются VARCHAR в БД.

пример дат, которые у меня есть:

26-11-2011
14-04-2009
27-02-2010
03-11-2020
04-06-2021

мой query:

SELECT table
FROM database
WHERE STR_TO_DATE(expiration, '%d-%m-%Y') <= DATE_FORMAT(NOW(), '%d-%m-%Y');

при запуске этого запроса он возвращает 0 строк, если я знаю, что у меня есть даты, соответствующие условию. (как показано выше, должны возвращаться такие строки, как 26-11-2011

Дело в том, что когда я запускаю запрос с >=, он возвращает хорошие результаты:

03-05-2021
05-05-2021
01-05-2021

Спасибо!

1 Ответ

1 голос
/ 06 мая 2020

Вы смешиваете типы DATE и строки, содержащие представление даты.

Вы конвертируете дату VARCHAR в тип DATE с помощью STR_TO_DATE (), поэтому используйте CURDATE (), который также возвращает действительный тип DATE, поэтому сравнение сравнивает яблоки с яблоками

WHERE STR_TO_DATE(expiration, '%d-%m-%Y') <= CURDATE();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...