在尝试编写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
我正在获得几行空记录。
答案 0 :(得分:0)
它是否适用于mysql。
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 DATEDIFF(str_to_date(CURDATE(),'%d/%m/%Y'),
str_to_date(e.eventDate,'%d/%m/%Y')) >= 0
答案 1 :(得分:0)
您的日期存储为varchar并将其转换为您需要的实际日期 str_to_date
select str_to_date('22/11/2014','%d/%m/%Y') as date ;
+------------+
| date |
+------------+
| 2014-11-22 |
+------------+
所以在比较中你应该如上所述使用。
注意:最好将日期存储在mysql本机日期数据类型中,而不是varchar