2011-07-02 112 views
3

我想選擇1小時間隔內的記錄,以及小時間隔內的最高值和最低值。我可以在一小時內做到這一點(例如,凌晨1點,凌晨2點,凌晨3點),但我想按照指定的分鐘時間(例如上午1點30分,凌晨2點30分,凌晨3點30分,凌晨1點50分,凌晨2點50分,凌晨3點50分)。我不想按半小時(如1:00,1:30,2:00,2:30) 這是SQL我有1小時的時間間隔:MySQL - 如何分組小時,偏移30分鐘

select date(date) 'aDate', hour(date) 'aHour', date, bidOpen, max(bidHigh), min(bidLow) 
from data 
where date > "2010-10-10" 
group by aDate, aHour 

我試着:小時(日期)+ .5'aHour':但它不起作用。

謝謝!

回答

2

解決方案是使用包含您的時間片的助手錶。

的FromHour和ToHour僅僅是字符串

TABLE timeslice 
ID | FromHour | ToHour | NextDay 
---+----------+--------+------- 
1 | 00:30 | 01:30 | 0 
2 | 01:30 | 02:30 | 0 
<snip> 
24 | 23:30 | 00:30 | 1 

select date(date) aDate, ID ,date, bidOpen, max(bidHigh),min(bidLow) 
from data inner join timeslice 
    ON date >= CONCAT(date(Date),' ',FromHour) 
    and date < concat(date(DATEADD(day,NextDay,date),' ',ToHour) 
group by aDate, ID 
1

如果您存儲您的日期/時間的時間戳,你可以做mathy之類的東西GROUP BY FLOOR(MOD((mytimestamp-1800)/3600))開始在半小時小時一班。