将NOW()转换为d-m-Y

时间:2020-05-06 14:25:58

标签: mysql mariadb

我正在尝试比较以下格式的日期:“ dd-mm-yyyy”,它们实际上是数据库中的VARCHAR。

我有日期的示例:

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

我的查询:

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 个答案:

答案 0 :(得分:1)

您正在混合DATE类型和带有日期表示形式的字符串。

您正在使用STR_TO_DATE()将VARCHAR日期转换为DATE类型,因此请使用CURDATE(),它也会返回有效的DATE类型,因此比较会将Apple与Apple进行比较。

WHERE STR_TO_DATE(expiration, '%d-%m-%Y') <= CURDATE();