MYSQL 查询 select 列字符串日期与格式化当前日期的日期相比

MYSQL query select column string date compared to date formatted current date

这是我试图在我的 SQL phpMyAdmin 中 运行 检索 2 行数据的查询:

SELECT * FROM table WHERE STR_TO_DATE(theDate, '%a, %b %e') = DATE_FORMAT(curdate(), '%a, %b %e')

我没有收到错误,也没有结果。对于今天的日期,日期列中的字符串格式如下所示:

Tue, Jan 20

我在转化比较中做错了什么?

STR_TO_DATE() 从字符串创建日期,而 CURDATE() returns 直接创建日期。

这应该有效:

WHERE STR_TO_DATE(theDate, '%a, %b %c') = curdate()

STR_TO_DATE(theDate, '%a, %b %c')是将日期行字符串日期转换成Y-m-d格式

并且您正在尝试按照查询

进行比较
`%Y-%m-%d` = '%a, %b %c'

如果您想比较其他格式的日期,请尝试此查询

如果theDate日期存储格式Tue, Jan 20

SELECT * FROM table WHERE 
    theDate = 
       DATE_FORMAT(curdate(), '%a, %b %c')

您的日期格式缺少年份,这使得日期比较变得复杂。最好的解决方案可能是将当前日期转换为字符串:

WHERE thedate = DATE_FORMAT(curdate(), '%a, %b %c')

您应该为这些列使用本机 date/time 格式,而不是字符串。