我在尝试编写 SQL 语句来获取日期大于今天的记录时遇到一些问题。这是我的 SQL 语句:
SELECT e.eventID, e.eventName, e.eventDesc, e.eventTime, e.eventX, e.eventY, e.eventBy, e.eventPic,
e.eventAddr, e.eventDate
FROM mydb.event e INNER JOIN mydb.bookedevent be ON e.eventID = be.eventID
WHERE DATE_FORMAT(e.eventDate, '%Y-%m-%d') >= CURDATE()
我在事件表中的日期采用 varchar() 格式,格式如下:22/11/2014。我有一些符合此条件的记录,但我收到了 0 条返回记录。所以,我去测试通过这个SQL语句获取格式化的日期列:
SELECT DATE_FORMAT(e.eventDate, '%Y/%m/%d') FROM mydb.event e
我得到了几行空记录。
最佳答案
您的日期存储为 varchar 并将其转换为您需要的实际日期 str_to_date
select str_to_date('22/11/2014','%d/%m/%Y') as date ;
+------------+
| date |
+------------+
| 2014-11-22 |
+------------+
所以在比较中你应该使用上面的方法。
注意:最好将日期存储在 mysql native 日期数据类型中,而不是 varchar
关于mysql - SQL select语句比较格式化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26995411/