此查询没有结果且没有错误。 Bar的数据类型为DATETIME。
SELECT * FROM foo WHERE DATE(bar) = '2013-02-26';
此查询:
SELECT COUNT(*),DATE(bar) FROM foo GROUP BY DATE(bar) ORDER BY DATE(bar) DESC;
产生这些结果:
我做错了什么?
//编辑 出于某种原因,这可以按预期工作......
SELECT * FROM foo WHERE DATE_FORMAT(bar,'%Y-%m-%d') = "2013-02-26"
答案 0 :(得分:1)
您发布的查询中没有“错误”。关于为什么该查询将返回0行,没有简单的解释。
为了帮助调试此问题,我建议您查看此查询是否返回行:
SELECT bar
FROM foo
WHERE DATE(bar) = '2013-02-26'
LIMIT 10
或者
SELECT bar
FROM foo
WHERE bar >= '2013-02-26'
AND bar < '2013-02-26' + INTERVAL 1 DAY
LIMIT 10
(注意:后一个查询可以使用带有前导列bar
的索引来使用索引范围扫描操作;对于其他查询表单(将bar
列包装在{ {1}}函数,MySQL无法使用索引范围扫描。)
接下来,通过将该表达式添加到SELECT列表...
,检查DATE(bar)返回的值DATE