SQL SELECT*FROM datetime = CURDATE()返回一个空结果集

yud*_*yyy 5 mysql sql datetime

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

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

我使用的是XAMPP v1.8.0,MySQL v5.5.25a.

Joh*_*Woo 11

尝试CAST荷兰国际集团datetime,以date通过使用DATE()

SELECT * 
FROM tableName
WHERE DATE(`datetime`) = DATE(CURDATE())
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

  • @JohnWoo,+ 1.不需要DATE() - 强制CURDATE(),但是,它已经是DATE类型.另外,`YYYY-MM-DD HH:MM:SS`确实等于'YYYY-MM-DD`,但仅在'00:00:00`(DATE被提升为DATETIME). (2认同)

Ala*_*ins 6

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

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

WHERE `datetime` between '2012-01-01 00:00:00' and '2012-01-01 23:59:59'
Run Code Online (Sandbox Code Playgroud)

或者仅将 DATE 部分存储在单独的列中(这将具有较低的基数并且可以更好地由优化器处理)。