Pet*_*aig 7 mysql timestamp group-by
我想使用时间码记录MySql中的某些活动time().现在我正在积累数千条记录,我想按小时/天/月等组输出数据.
在MySQL中对时间码进行分组的建议方法是什么?
示例数据:
示例代码:
$sql = "SELECT COUNT(timecode) FROM timecodeTable";
//GROUP BY round(timecode/3600, 1) //group by hour??
Run Code Online (Sandbox Code Playgroud)
编辑: 有两个分组可以制作,所以我应该更清楚:一天24小时可以分组,但我更感兴趣的是随着时间的推移分组,所以返回365结果每年跟踪到位,所以总计对于每一天过去,然后能够选择一系列日期,并查看在所选时间内访问的小时/分钟的更多详细信息.
这就是为什么我把它命名为使用PHP,因为我希望通过PHP循环生成小时/天等可能会更容易?
hob*_*ave 13
彼得
SELECT COUNT(*), HOUR(timecode)
FROM timecodeTable
GROUP BY HOUR(timecode);
Run Code Online (Sandbox Code Playgroud)
鉴于上述数据,您的结果集看起来如下:
+----------+----------------+
| COUNT(*) | HOUR(timecode) |
+----------+----------------+
| 10 | 18 |
+----------+----------------+
Run Code Online (Sandbox Code Playgroud)
可以在此处找到更多相关功能.
编辑
根据你的评论输出做了我自己的一些测试后,我确定你的数据库处于史诗般的失败状态.:)你使用INT作为TIMESTAMPs.这绝不是一个好主意.使用INT代替TIMESTAMP/DATETIME没有正当理由.
也就是说,您必须修改我的上述示例,如下所示:
SELECT COUNT(*), HOUR(FROM_UNIXTIME(timecode))
FROM timecodeTable
GROUP BY HOUR(FROM_UNIXTIME(timecode));
Run Code Online (Sandbox Code Playgroud)
编辑2
您可以使用其他GROUP BY子句来实现此目的:
SELECT
COUNT(*),
YEAR(timecode),
DAYOFYEAR(timecode),
HOUR(timecode)
FROM timecodeTable
GROUP BY YEAR(timecode), DAYOFYEAR(timecode), HOUR(timecode);
Run Code Online (Sandbox Code Playgroud)
注意,为简洁起见,我省略了FROM_UNIXTIME().