2016-06-15 81 views
1

我想将日期时间列转换为日期并获取特定日期的所有行。但是试一试。查询返回0行。什么是错,此代码 其中date(arefresh_time)= '2016年6月11日'在MySQL中过滤日期

+0

如果您显示数据和实际查询(或两者的合理传真),这将有所帮助。 – Uueerdo

+0

看起来不太可怕。他的代码中有反嘀,因此这个问题的格式变得糟糕。也许你缺乏这些数据,或者你是英国人寻找11月6日。 – Drew

回答

0

不要!在WHERE子句中的字段上使用函数,如@scaisEdge的答案。如果你这样做,那么MySQL必须读取表中的所有行,然后将它与函数进行转换,然后再进行比较。它永远不能使用索引

如果是更好,更快地使用这样

样品

WHERE `a`.`refresh_time` >= '2016-06-11 00:00:00' AND `a`.`refresh_time` <= '2016-06-11 23:59:59'; 

OR

WHERE `a`.`refresh_time` BETWEEN '2016-06-11 00:00:00' AND '2016-06-11 23:59:59'; 

因此MySQL可以直接使用INDEX找到正确的行

您可以在SELECT之前用EXPLAIN测试它。

0

使用正确的DATE_FORMAT

where date_format(`a`.`refresh_time`'%Y-%m-%d') = '2016-06-11' 
+0

谢谢大家! – user1721546

+0

你感谢我..如果你认为我的anser是有用的,你可以评价它.. – scaisEdge