5

谁能告诉我我的错误在哪里?通过使用该查询,它应该返回一些数据具有 datetime = '2012-10-12' 的行,对吗?这是我的参考

我的日期时间列 = 'YYYY-MM-DD HH:MM:SS',数据类型 = 日期时间。

我正在使用 XAMPP v1.8.0、MySQL v5.5.25a。

4

4 回答 4

12

尝试使用CAST_ datetime_dateDATE()

SELECT * 
FROM tableName
WHERE DATE(`datetime`) = DATE(CURDATE())

YYYY-MM-DD HH:MM:SS不等于YYYY-MM-DD

2012-01-01 12:12:12 is not equal to 2012-01-01 00:00:00
于 2012-10-12T03:20:51.640 回答
6

不要在你的列上使用函数,例如DATE(datetime)- mysql 不能使用你的索引。

使用范围几乎肯定会更好:

WHERE `datetime` between '2012-01-01 00:00:00' and '2012-01-01 23:59:59'

或仅将 DATE 部分存储在单独的列中(基数较低,优化器会更好地处理)。

于 2012-10-12T03:32:21.137 回答
3
SELECT * FROM tableName WHERE DATE(datetime) = CURDATE()
于 2015-10-08T08:00:31.483 回答
1

使用DATE()from mysql 将 TIMESTAMP 格式化为 DATE

Select * FROM tablename WHERE DATE(colname) = CURDATE()

于 2016-09-09T06:58:19.157 回答