MySQL 按小时计算日期时间条目


MySQL Count DATETIME Entries by Hour

我有一个MySQL表,里面有一个DATETIME列。我想计算将 DATETIME 字段设置为一天中每个小时的条目数。

例如,值为 2012-12-18 22:05:20 的行将在 22:00:00(晚上 10 点)打卡。带有 2013-09-25 12:29:58 的条目将在 12:00:00(中午 12 点)打卡。我不需要知道日期,只需要知道条目发生在哪个小时。

我的日期时间字段称为date_time。关于如何按小时计算条目的任何想法?谢谢!

有一个

函数HOUR可以准确地返回这一点。

所以你可以做一些类似的事情

select hour(date_time), count(*) from tableName group by hour(date_time)

SQLfiddle

这样的事情应该可以工作:

SELECT DATEADD(HH,DATEDIFF(HH,0,date_time),0) AS dt_hour, COUNT(*) AS cnt
FROM tbl
GROUP BY DATEADD(HH,DATEDIFF(HH,0,date_time),0)

实际上,它会查找零日期和date_time字段之间的小时数,然后将该小时数添加到零日期。这将去除任何分钟和秒,但保留日期和时间。这允许您每天按小时聚合...

更新:当我读到你的问题时,我错过了关于实际日期不重要的一点。MySQL有一个名为HOUR()的函数,它将从DATETIME值返回小时。所以你可以这样做:

SELECT HOUR(date_time) AS dt_hour, COUNT(*) AS cnt
FROM tbl
GROUP BY HOUR(date_time)