首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP对MySQL中的时间戳进行分组

问用PHP对MySQL中的时间戳进行分组
EN

Stack Overflow用户
提问于 2009-07-27 00:34:20
回答 1查看 8.4K关注 0票数 7

我希望在MySql中使用time()来记录特定的活动。现在我积累了成千上万的记录,我想要输出的数据按小时/天/月等。

在MySQL中对时间码进行分组的建议方法是什么?

示例数据:

  • 1248651289
  • 1248651299
  • 1248651386
  • 1248651588
  • 1248651647
  • 1248651700
  • 1248651707
  • 1248651737
  • 1248651808
  • 1248652269

示例代码:

代码语言:javascript
复制
$sql = "SELECT COUNT(timecode) FROM timecodeTable";
//GROUP BY round(timecode/3600, 1) //group by hour??

编辑:有两种分组,所以我应该说得更清楚:一天中的24小时可以分组,但我更感兴趣的是,随着时间的推移分组,这样每年返回365个跟踪结果,这样每天的跟踪结果都是正确的,这样就可以选择一个日期范围,查看在选定的时间内访问的时间/分钟的更多细节。

这就是为什么我把它命名为使用PHP,就像我预期的那样,使用PHP循环来生成小时/天等可能会更容易吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-27 00:36:42

彼得

代码语言:javascript
复制
SELECT COUNT(*), HOUR(timecode)
FROM timecodeTable
GROUP BY HOUR(timecode);

给定上述数据,您的结果集将如下所示:

代码语言:javascript
复制
+----------+----------------+
| COUNT(*) | HOUR(timecode) |
+----------+----------------+
|       10 |             18 | 
+----------+----------------+

更多的相关函数可以找到这里。

编辑

在根据您的注释的输出进行了一些自己的测试之后,我确定您的数据库处于史诗失败状态。)您使用INT's作为时间戳。这绝对不是个好主意。没有合理的理由使用INT来代替时间戳/日期时间。

尽管如此,您必须按照以下方式修改我的上述示例:

代码语言:javascript
复制
SELECT COUNT(*), HOUR(FROM_UNIXTIME(timecode))
FROM timecodeTable
GROUP BY HOUR(FROM_UNIXTIME(timecode));

编辑2

您可以使用其他GROUP BY子句来实现这一点:

代码语言:javascript
复制
SELECT 
  COUNT(*),
  YEAR(timecode),
  DAYOFYEAR(timecode),
  HOUR(timecode)
FROM timecodeTable
GROUP BY YEAR(timecode), DAYOFYEAR(timecode), HOUR(timecode);

注意,为了简洁起见,我省略了FROM_UNIXTIME()。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1185973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档