gpt4 book ai didi

mysql - 使用 PHP 在 MySQL 中对时间戳进行分组

转载 作者:可可西里 更新时间:2023-11-01 06:35:53 27 4
gpt4 key购买 nike

我想用 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 .

编辑

在根据您的评论输出进行了我自己的一些测试后,我确定您的数据库处于epic fail 状态。 :) 您正在使用 INT 作为 TIMESTAMP。这绝不是一个好主意。没有正当理由使用 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), DAYOFYEAR(timecode), HOUR(timecode);

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

关于mysql - 使用 PHP 在 MySQL 中对时间戳进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1185973/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com