MySql date_add() 查询改进

标签 mysql sql

我正在运行一个查询,获取今天在 now() 的事件,并将其与过去 5 天同一时间的事件进行比较。

select count(*) ,date(timestamp) date , now() now  
from activitylog 
where timestamp>date_add(now(), INTERVAL -5 DAY) and 
      hour(timestamp) <=hour(now()) 
group by date(timestamp) 
order by date(timestamp) desc;

有没有比上面的方法更有效的方法?

最佳答案

正如所写,查询将返回当天和前 4 天截至当前小时的当天事件,加上仅五天前的当前小时事件 - 以使其包括当前小时的一整天第五天,将 where 子句更改为:

where timestamp>date(date_add(now(), INTERVAL -5 DAY)) and 
      hour(timestamp) <=hour(now())

除此之外,我能想到的唯一问题是检查时间戳列上是否有索引。否则,它似乎处于最佳状态。

关于MySql date_add() 查询改进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9669150/

相关文章:

php - PhpMyAdmin 能够处理大量数据吗?

mysql - 无法在 mysql 中对列进行排序

php - 无法将返回的 API 请求插入数据库 - php

mysql - 自联接在查询结果中显示 null Mangers

Java 数据库应用程序加载大量记录时卡住

java - 编辑显示数据库中所选下拉值的 Servlet

c# - 收到错误 "System.IndexOutOfRangeException"。为什么?

sql - hadoop 配置单元使用 row_number()

mysql - 查询 phpMyAdmin 以仅显示具有特定值的行

sql - 仅当 subselect 不为 null 时才插入值