mysql - 在 MySQL 中过滤日期

标签 mysql

我正在尝试将日期时间列转换为日期并获取特定日期的所有行。但是什么时候尝试。查询返回 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/

相关文章:

下拉菜单中的 PHP 存储和显示选项

mysql - 从物理文件恢复 MySQL 数据库

PHP Foreach 用于从数据库发送电子邮件?

sql - 什么相当于 MySQL 中 MS Access 中的 Nz 函数? Nz 是 SQL 标准吗?

mysql - 如何在单表继承上强制执行参照完整性?

java - 如何从java中的线程更新MySql数据库

mysql - Logstash 未从 MySQL 填充 ElasticSearch

php - 如何从 mySQL 中的索引字段输出其他表的值?

mysql - mysql中如何将现有行的列的值加1

mysql - 根据两个表中一列的两个匹配值更新一列