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 格式,而不是字符串。
这是我试图在我的 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 格式,而不是字符串。