我正在尝试将日期时间列转换为日期并获取特定日期中的所有行。但是试试吧。查询返回0行。这段代码出了什么问题
其中date(a
。refresh_time
)='2016-06-11'
答案 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进行测试。