2010-08-03 58 views
1

我每15分钟收集一大组数据。我试图在特定时间段内选择数据,然后在该时间段内按另一个日期间隔进行分隔。并在这段时间内超过一段时间。MySQL基于日期范围和时间的总和

例如,我希望能够在01/01/2009和01/01/2010之间选择数据,并按日期范围01/01/2009 - 05/01/2009,05/02/2009进行分组 - 11/01/2009,11/02/2009 - 01/01/2010,然后在每组中选择时间00:00:01 - 12:00:00和12:00:01 - 23:59的数据: 59

SELECT SUM(Data.usage)AS sum 
FROM Data.meter_id = Meter.id 
WHERE Data.start_read >= '2009-01-01' 
AND Data.end_read <= '2010-01-01 23:59:59' 

GROUP BY日期范围?不知道如何分离数据。由于

+0

会有一套逻辑,你的日期范围将会如何?例如,每3天,每5天等等,还是需要在同一个查询中使用可变范围? – MPelletier 2010-08-03 19:57:14

+0

不幸的是,它需要变量,因为我需要考虑用户输入并且无法控制他们的日期选择。 – Kramer 2010-08-03 20:08:22

+0

那么对每个片进行一次查询会更简单吗? – MPelletier 2010-08-03 20:20:32

回答

2

要GROUP BY日期范围,我经常使用case语句:

Group By Case 
    When start_read between '01/01/2009' and '05/01/2010' then 'Jan-Apr 09' 
    When start_read between '05/01/2009' and '11/01/2010' then 'May-Nov 09' 
    ...etc 
+0

谢谢比尔。 – Kramer 2010-08-05 18:48:25