谁能告诉我哪里是我的错?通过使用该查询,它应该返回数据具有datetime ='2012-10-12'的行?这是我的reference
我的日期时间栏='YYYY-MM-DD HH:MM:SS',数据类型=日期时间。
我正在使用XAMPP v1.8.0,MySQL v5.5.25a。
答案 0 :(得分:11)
使用CAST
datetime
date
DATE()
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
{{1}}
答案 1 :(得分:4)
不要在列上使用函数,例如DATE(datetime)
- mysql无法使用您的索引。
使用范围几乎肯定更好:
WHERE `datetime` between '2012-01-01 00:00:00' and '2012-01-01 23:59:59'
或仅将DATE部分存储在一个单独的列中(它具有较低的基数并且优化器可以更好地对待它)。
答案 2 :(得分:2)
SELECT * FROM tableName WHERE DATE(datetime) = CURDATE()
答案 3 :(得分:1)
使用mysql中的DATE()
将TIMESTAMP格式化为DATE
Select * FROM tablename WHERE DATE(colname) = CURDATE()