【问题标题】:Select count group by day of the dateTime按日期时间的日期选择计数组
【发布时间】:2019-03-05 04:01:27
【问题描述】:

我有一张表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中构建呢?谢谢。 对我来说,这里的问题是按日期字段分组。

【问题讨论】:

标签: mysql sql date group-by


【解决方案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');

【讨论】:

    【解决方案2】:

    我会使用date(),并且要非常小心where 子句。不要使用now(),因为它也有时间组件。

    改为:

    select date(date), count(*)
    from monitor
    where date >= curdate() - interval 5 day
    group by date(date);
    

    【讨论】:

      猜你喜欢
      • 2017-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2015-06-01
      相关资源
      最近更新 更多