0

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

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

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

4

2 回答 2

3

有一个函数HOUR可以完全返回。

所以你可以做类似的事情

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

sqlfiddle

于 2013-09-26T04:08:41.130 回答
1

像这样的东西应该工作:

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)
于 2013-09-26T04:06:11.217 回答