在MySQL中过滤日期

时间:2016-06-15 18:33:31

标签: mysql

我正在尝试将日期时间列转换为日期并获取特定日期中的所有行。但是试试吧。查询返回0行。这段代码出了什么问题         其中date(arefresh_time)='2016-06-11'

2 个答案:

答案 0 :(得分:0)

使用正确的date_format

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

答案 1 :(得分:0)

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

如果像这样更好更快地使用

<强>样品

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

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

所以MySQL可以直接使用INDEX来找到正确的ROW

您可以在SELECT之前使用EXPLAIN进行测试。