MySQL空结果集在DATE(字段)=

时间:2013-02-27 18:57:16

标签: mysql date datetime

此查询没有结果且没有错误。 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;

产生这些结果:

results

我做错了什么?

//编辑 出于某种原因,这可以按预期工作......

 SELECT * FROM foo WHERE DATE_FORMAT(bar,'%Y-%m-%d') = "2013-02-26"

1 个答案:

答案 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