正如Gordon提到的,您可能需要一個輔助表作爲所有5分鐘間隔的基礎。我已經做了類似的查詢使用MySQL變量自我構建。
select
YourTable.WhateverFields
from
(select
@startTime RangeStart,
@startTime := date_add(@startTime, interval 5 MINUTE) RangeEnd
from
(select @startTime := '2014-10-20') sqlvars,
AnyTableThatHasAsManyDaysYouExpectToReport
limit
12 * numberOfHoursYouNeed * numberOfDaysYouNeed) DynamicTimeRange
LEFT JOIN YourTable
on YourTable.DateTimeField >= DynamicTimeRange.RangeStart
AND YourTable.DateTimeField < DynamicTimeRange.RangeEnd
因此,在這個例子中,最裏面的一個變量「startTime」到2014年10月20日,默認爲12:00:00。隨後,一出從創建一個rangeStart和rangeEnd的和組的兩列可能看起來像一個結果......
RangeStart RangeEnd
2014-10-20 00:00 2014-10-20 00:05
2014-10-20 05:00 2014-10-20 00:10
2014-10-20 10:00 2014-10-20 00:15
2014-10-20 05:00 2014-10-20 00:20
2014-10-20 20:00 2014-10-20 00:25
表參考「AnyTableThatHasAsManyDaysYouExpectToReport」就是這樣......在你的數據庫的任何表它的記錄數量至少與無數小時和數天需要5分鐘的時間間隔相同。如果您需要1天價值= 12條記錄* 5分鐘= 1小時* 24小時= 24 * 12 =需要288條記錄。如果你想要一個星期,那麼就這樣......乘以7,所以我的樣本只是有地方持有人來幫助澄清意圖......
但是,通過LEFT JOIN,您可以獲得所有間隔.. 。
謝謝!差距不是由於where子句,而是由於缺少任何條目。一個具有所有時間框架的子查詢怎麼可能是?帶額外桌子的營養不是很優雅,因爲我想看到所有的時間框架到現在或某個時間點。 – tobawo 2014-10-27 23:39:48