按日期时间选择计数组

时间:2019-03-05 04:01:27

标签: mysql sql date group-by

我有一个表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中进行构造?谢谢。 对我来说,这里的问题是“日期”字段的按天分组。

2 个答案:

答案 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);