我想使用time()使用时间码记录
MySql中的某些活动.现在我正在积累数千条记录,我想按小时/天/月等组输出数据.
示例数据:
> 1248651289
> 1248651299
> 1248651386
> 1248651588
> 1248651647
> 1248651700
> 1248651707
> 1248651737
> 1248651808
> 1248652269
示例代码:
$sql = "SELECT COUNT(timecode) FROM timecodeTable"; //GROUP BY round(timecode/3600,1) //group by hour??
编辑:
有两个分组可以制作,所以我应该更清楚:一天24小时可以分组,但我更感兴趣的是随着时间的推移分组,所以每年返回365个结果跟踪到位,所以每个一天过去了,然后能够选择一系列日期,并查看在所选时间内访问的小时/分钟的更多详细信息.
彼得
SELECT COUNT(*),HOUR(timecode) FROM timecodeTable GROUP BY HOUR(timecode);
鉴于上述数据,您的结果集看起来如下:
+----------+----------------+ | COUNT(*) | HOUR(timecode) | +----------+----------------+ | 10 | 18 | +----------+----------------+
编辑
根据你的评论输出做了我自己的一些测试后,我确定你的数据库处于史诗般的失败状态. :)你使用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),HOUR(timecode);
注意,为简洁起见,我省略了FROM_UNIXTIME().