我有一个表monitor
,其字段之一是Date
类型的日期。样本记录就像
id | date | other fields.
1 2019-03-01 20:00:00
2 2019-03-01 20:30:00
3 2019-03-02 20:00:00
4 2019-03-01 10:00:00
现在,我想计算最近五天的记录数,并返回如下图:
day| count
2019-03-01 3
2019-03-02 1
我的SQL就像:
select day(date),count(*) from monitor group by day(date);
那么我应该如何在mysql中进行构造?谢谢。 对我来说,这里的问题是“日期”字段的按天分组。
答案 0 :(得分:1)
您可以尝试使用DATE_FORMAT
函数。
select DATE_FORMAT(date,'%Y-%m-%d'),count(*)
from monitor
WHERE date between DATE_SUB(NOW(), - INTERVAL 5 DAY) AND NOW()
group by DATE_FORMAT(date,'%Y-%m-%d');
答案 1 :(得分:0)
我会使用date()
并特别注意where
子句。不要使用now()
,因为它也有时间成分。
相反:
select date(date), count(*)
from monitor
where date >= curdate() - interval 5 day
group by date(date);