SQL select语句比较格式化日期

时间:2014-11-18 13:22:57

标签: mysql date

在尝试编写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

我正在获得几行空记录。

2 个答案:

答案 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