【发布时间】:2019-09-07 21:47:14
【问题描述】:
我在这里找到了解决问题的各种方法:
How to group time column into 5 minute intervals and max/min value respectively SQL?
Grouping into interval of 5 minutes within a time range
解决任务的代码如下:
SELECT
FROM_UNIXTIME((UNIX_TIMESTAMP(table.timestamp) DIV 300) * 300) AS Timestamp,
val AS AgregatedValue
From foo
GROUP BY Timestamp
ORDER BY Timestamp
有人可以解释为什么提供的解决方案有效吗? 我找不到一个很好地描述它实际工作原理的答案。 为什么你首先 DIV 300 秒,最后乘以 300 秒? “背景”中发生了什么?
我阅读了有关 UNIX_TIMESTAMP(timestamp) 的文档,它以自 UTC 时间 '1970-01-01 00:00:00' 以来以秒为单位的无符号整数返回参数的值。
我知道FROM_UNIXTIME()恰好是UNIX_TIMESTAMP(timestamp)的反函数
也许这个问题很愚蠢,但我被困住了。
【问题讨论】:
-
这是个好问题,不傻!我们会认为
/ 300) * 300已过时,但您发现“在后台”发生了一些事情。所以我觉得这是一个非常聪明和聪明的问题。
标签: mysql