mysql - SQL select语句比较格式化日期

标签 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

我得到了几行空记录。

最佳答案

您的日期存储为 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/

相关文章:

android - 在android中创建一个具有外键作为表列的sqlite数据库表。我面临以下错误。我该如何解决这个问题

javascript - 无法将数据从一个表复制到另一个表

php - 使用单连接查询从第二个表中获取所有行数据

java - Mysql 连接关闭时出现错误 "Operation not allowed after ResultSet closed"

oracle - Oracle中没有时间的日期类型

mysql - 如何选择 >= 1 天前的行?

javascript - MomentJS 的奇怪日期时间输出

mysql - 如何在 REPLACE() 函数中使用数组?

c# - 如何获取日期时间月份开始和结束日期?

java - 将iso8601字符串日期时间格式转换为Java中的日期