此查询没有结果,也没有错误。 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 行,没有简单的解释。
为了帮助调试问题,我建议您查看此查询是否返回行:
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
DATE
函数中的 code> 列,MySQL 无法使用索引范围扫描。)
后续:
接下来,通过将该表达式添加到 SELECT 列表来检查 DATE(bar) 返回的值...
SELECT DATE(bar)
, bar
FROM foo
WHERE bar >= '2013-02-26'
AND bar < '2013-02-26' + INTERVAL 1 DAY
LIMIT 10
关于DATE(字段)上的 MySQL 空结果集 =,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15120060/