0

我有一个查询作为日常工作运行多年。不知怎的,昨天就停了。

我有一个timestamp具有正确值和查询的字段...

SELECT * 
FROM  `shoppingcart` 
WHERE  `creation_datetime` like  '2013-06-16'

我得到一个空的结果集。如果我%在它工作的日期之后添加一个。

MySQL 是 5.1.61,服务器上没有任何更新。

4

3 回答 3

5

如果您只想要列的date一部分,datetime您可以使用DATE()来提取它

SELECT * 
FROM shoppingcart
WHERE date(creation_datetime) = '2013-06-16'

但这不会像@eggyal 提到的那样使用索引。这就是为什么你应该更好地使用

SELECT * 
FROM shoppingcart
WHERE creation_datetime >= '2013-06-16' 
AND creation_datetime < '2013-06-17'
于 2013-06-17T16:49:18.160 回答
3

datetime类型有日期和时间。总是。如果省略时间部分,则与使用全零相同,因此只会匹配时间正好是午夜的记录。这就是为什么%有效 - 因为它随时接受。

日期时间示例:YYYY-MM-DD HH:MM:SS

于 2013-06-17T16:49:44.530 回答
1

使用时LIKE,必须使用%符号,否则LIKE作用与 相同=。尝试

LIKE  '2013-06-16%'

否则,您可以简单地使用 DATE 函数

DATE(creation_datetime) = '2013-06-16'
于 2013-06-17T16:50:39.760 回答