彼得
SELECT COUNT(*), HOUR(timecode)
FROM timecodeTable
GROUP BY HOUR(timecode);
鉴于上述数据,您的结果集看起来如下:
+----------+----------------+
| COUNT(*) | HOUR(timecode) |
+----------+----------------+
| 10 | 18 |
+----------+----------------+
可以找到更多相关功能here.
编辑
根据你的评论输出做了我自己的一些测试后,我确定你的数据库处于史诗般的失败状态. :)你使用INT作为TIMESTAMPs.这绝不是一个好主意.使用INT代替TIMESTAMP / DATETIME没有正当理由.
也就是说,您必须修改我的上述示例,如下所示:
SELECT COUNT(*), HOUR(FROM_UNIXTIME(timecode))
FROM timecodeTable
GROUP BY HOUR(FROM_UNIXTIME(timecode));
编辑2
您可以使用其他GROUP BY子句来实现此目的:
SELECT
COUNT(*),
YEAR(timecode),
DAYOFYEAR(timecode),
HOUR(timecode)
FROM timecodeTable
GROUP BY YEAR(timecode), DAYOFYEAR(timecode), HOUR(timecode);
注意,为简洁起见,我省略了FROM_UNIXTIME().