这是我试图在我的SQL phpMyAdmin中运行以检索2行数据的查询:
SELECT * FROM table WHERE STR_TO_DATE(theDate, '%a, %b %e') = DATE_FORMAT(curdate(), '%a, %b %e')
我没有错误,也没有结果。对于今天的日期,日期列中字符串的格式如下:
Tue, Jan 20
转化比较中我做错了什么?
答案 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')