MYSQL查询选择列字符串日期与日期格式化的当前日期进行比较

时间:2015-01-20 13:00:42

标签: php mysql datetime

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

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

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

Tue, Jan 20

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

3 个答案:

答案 0 :(得分:1)

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

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

您应该为这些列使用本机日期/时间格式,而不是字符串。

答案 1 :(得分:0)

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

这应该有效:

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

答案 2 :(得分:0)

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')