我希望在MySql中使用time()来记录特定的活动。现在我积累了成千上万的记录,我想要输出的数据按小时/天/月等。
在MySQL中对时间码进行分组的建议方法是什么?
示例数据:
示例代码:
$sql = "SELECT COUNT(timecode) FROM timecodeTable";
//GROUP BY round(timecode/3600, 1) //group by hour??编辑:有两种分组,所以我应该说得更清楚:一天中的24小时可以分组,但我更感兴趣的是,随着时间的推移分组,这样每年返回365个跟踪结果,这样每天的跟踪结果都是正确的,这样就可以选择一个日期范围,查看在选定的时间内访问的时间/分钟的更多细节。
这就是为什么我把它命名为使用PHP,就像我预期的那样,使用PHP循环来生成小时/天等可能会更容易吗?
发布于 2009-07-27 00:36:42
彼得
SELECT COUNT(*), HOUR(timecode)
FROM timecodeTable
GROUP BY HOUR(timecode);给定上述数据,您的结果集将如下所示:
+----------+----------------+
| COUNT(*) | HOUR(timecode) |
+----------+----------------+
| 10 | 18 |
+----------+----------------+更多的相关函数可以找到这里。
编辑
在根据您的注释的输出进行了一些自己的测试之后,我确定您的数据库处于史诗失败状态。)您使用INT's作为时间戳。这绝对不是个好主意。没有合理的理由使用INT来代替时间戳/日期时间。
尽管如此,您必须按照以下方式修改我的上述示例:
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()。
https://stackoverflow.com/questions/1185973
复制相似问题