简单的MySQL时间戳查询失败

时间:2013-06-17 16:48:10

标签: mysql sql

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

我有一个timestamp字段,其中包含正确的值和查询...

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

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

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

3 个答案:

答案 0 :(得分: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'

答案 1 :(得分:3)

datetime类型有日期和时间。总是。如果省略时间部分,则与使用全零相同,因此仅匹配时间恰好是午夜的记录。这就是%正在工作的原因 - 因为它可以随时接受。

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

答案 2 :(得分:1)

使用LIKE时,您必须使用%个符号,否则LIKE的行为与=相同。尝试

LIKE  '2013-06-16%'

否则您只需使用DATE功能

即可
DATE(creation_datetime) = '2013-06-16'