如何基于每单位时间的时间戳列来计算MySQL表中的记录数,其中时间单位是任意的?
具体来说,我想计算在给定的时间间隔内有多少记录的时间戳落入15分钟的桶中.我知道如何使用MySQL日期函数在1秒,1分钟,1小时,1天等桶中执行此操作,例如
SELECT YEAR(datefield) Y, MONTH(datefield) M, DAY(datefield) D, COUNT(*) Cnt FROM mytable GROUP BY YEAR(datefield), MONTH(datefield), DAY(datefield)
Run Code Online (Sandbox Code Playgroud)
但我怎么能用15分钟的分组?
bob*_*nce 25
GROUP BY
YEAR(datefield),
MONTH(datefield),
DAY(datefield),
HOUR(datefield),
FLOOR(MINUTE(datefield)/15)
Run Code Online (Sandbox Code Playgroud)
你也可以说:
SELECT FLOOR(UNIX_TIMESTAMP(datefield)/900) AS t, COUNT(*) AS cnt
FROM mytable
GROUP BY t
Run Code Online (Sandbox Code Playgroud)
应用程序负责将每个15分钟时间段的时间戳格式化为可读y/m/d/h/m.(如果你需要在一个疯狂的非四分之一小时对齐的时区中有当地时间,你需要一个黑客偏移.)