我正在尝试将日期时间列转换为日期并获取特定日期的所有行。但是什么时候尝试。查询返回 0 行。这段代码有什么问题
其中日期 (a
.refresh_time
) = '2016-06-11'
最佳答案
不要!!!在 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 对其进行测试。
关于mysql - 在 MySQL 中过滤日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37843214/