在MySQL中按小时分组选择日期/时间分组

7

我有一张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小时的增量,这样我就可以看到在任何给定的一天的任何给定小时内有多少数据。
谢谢,希望你能帮忙!
2个回答

12

你可以使用以下查询中的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文档以了解更多有关日期和时间函数的参考:


3
SELECT HOUR(datetime), COUNT(*)
FROM table
GROUP BY HOUR(datetime);

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

这个查询的问题在于你无法将报告跨越10天。 - Daniel Vassallo
抱歉,这不起作用 - 只显示一天的小时数,无法跨越时间。 - Alexia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接