MySQL Group按特定的24小时间隔

时间:2015-06-13 19:51:29

标签: mysql

我有一个MySQL表,每行都有时间戳值。我的目标是将金额列的值和每天从05:30:00开始的自定义24小时间隔进行分组。

输入:

timestamp                 amount
--------------            ------
2015-01-19 08:30:12       4
2015-01-19 15:37:40       2
2015-01-20 01:57:38       2
2015-01-20 07:10:07       4
2015-01-20 22:10:38       2
2015-01-21 08:35:55       4

预期:

interval                                      SUM(amount)
-------------                                 -----------
2015-01-19 05:30:00 - 2015-01-20 05:30:00     8
2015-01-20 05:30:00 - 2015-01-21 05:30:00     6 
2015-01-21 05:30:00 - 2015-01-22 05:30:00     4

我已尝试实施此处提供的解决方案Groupinginto interval of 5 minutes within a time range和此处Mysql Group By 24 hour intervals - 但未成功。

1 个答案:

答案 0 :(得分:3)

您可以通过减去5.5小时并按日期汇总来完成此操作:

select date_add(date(timestamp - interval (5*60 + 30) minute), interval (5*60 + 30)  minute) as interval_start,
       date_add(date(timestamp - interval (5*60 + 30) minute), interval (24*60 + 5*60 + 30)  minute) as interval_end,
       count(*) as cnt
from t
group by date(timestamp - interval (5*60 + 30) minute)
order by interval_start;