我正在运行一个查询,获取今天在 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/