【问题标题】:Select date/time groupings in MySQL grouped by hour在 MySQL 中选择按小时分组的日期/时间分组
【发布时间】:2011-01-16 13:18:25
【问题描述】:

我在 mysql 表中有一堆日期数据,如下所示:

2010-02-13 1:00:00, "soma data"
2010-02-13 1:25:00, "soma data"
2010-02-13 1:37:00, "soma data"
2010-02-13 2:12:00, "soma data"

我想选择一个显示按小时分组的数据的报告,例如:

On Feb 13, during the hour from 1:00 pm to 1:59 pm, there were 3 data points.
On Feb 13, during the hour from 2:00 pm to 2:59 pm, there was 1 data points.
...

基本上我想报告一天中每个小时发生的累积记录数量。所以最终结果会给我一个 10 天的报告,以 24 小时为增量细分,这样我就可以看到在任何给定日期的任何给定小时内有多少数据。

TIA,希望你能帮上忙!

【问题讨论】:

    标签: php sql mysql datetime


    【解决方案1】:

    您可能希望在以下查询中使用GROUP BY 子句:

    SELECT 
        COUNT(*),
        YEAR(dateTimeField),
        MONTH(dateTimeField),
        DAY(dateTimeField),
        HOUR(dateTimeField)
    FROM 
        yourTable
    WHERE
        dateTimeField >= '2010-02-04 00:00:00' AND
        dateTimeField < '2010-02-14 00:00:00'
    GROUP BY 
        YEAR(dateTimeField), 
        MONTH(dateTimeField),
        DAY(dateTimeField),
        HOUR(dateTimeField);
    

    您可能还想查看 MySQL 文档以获取有关日期和时间函数的更多参考:

    【讨论】:

      【解决方案2】:
      SELECT HOUR(datetime), COUNT(*)
      FROM table
      GROUP BY HOUR(datetime);
      

      您将获得两个字段:小时和该小时内的事件数。

      【讨论】:

      • 这个查询的问题是你不能跨越10天的报告。
      • 抱歉,这不起作用 - 只显示一天的小时数,不能跨越时间。
      猜你喜欢
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多