加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用PHP将MySQL中的时间戳分组

发布时间:2020-12-13 18:17:07 所属栏目:PHP教程 来源:网络整理
导读:我想使用time()使用时间码记录 MySql中的某些活动.现在我正在积累数千条记录,我想按小时/天/月等组输出数据. 在MySQL中对时间码进行分组的建议方法是什么? 示例数据: 1248651289 1248651299 1248651386 1248651588 1248651647 1248651700 1248651707 12486
我想使用time()使用时间码记录 MySql中的某些活动.现在我正在积累数千条记录,我想按小时/天/月等组输出数据.

在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个结果跟踪到位,所以每个一天过去了,然后能够选择一系列日期,并查看在所选时间内访问的小时/分钟的更多详细信息.

这就是为什么我把它命名为使用PHP,因为我希望通过PHP循环生成小时/天等可能会更容易?

彼得
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),HOUR(timecode);

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读