我有一个查询,它已作为日常工作运行多年。不知怎的,它昨天停了下来。
我有一个timestamp
字段,其中包含正确的值和查询...
SELECT *
FROM `shoppingcart`
WHERE `creation_datetime` like '2013-06-16'
我得到一个空的结果集。如果我在其工作日期之后添加%
。
MySQL是5.1.61,服务器上没有更新任何内容。
答案 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'