2015-12-16 179 views
3

MySQL的1H記錄我使用:過去24小時

SELECT * FROM data WHERE date >= now() - INTERVAL 1 DAY 

在最後24小時獲取的所有記錄。有沒有一種方法可以從MySQL中「過濾」,以在該24小時內只讀取每個小時的一個值?我真的不介意它的第一記錄還是每小時的最後記錄。

日期在Mysql時間戳中,並用作主鍵(CURRENT_TIMESTAMP)。

爲什麼?我每分鐘插入一次溫度記錄,然後用Google Chart繪製它。當我繪製過去24小時的圖表時,它看起來很瘋狂!由於它是一個家庭DIY項目,在過去的24小時內以1小時的間隔繪製溫度圖表很好。

回答

1

試試這個:

SELECT * FROM data WHERE date >= now() - INTERVAL 1 DAY group by hour(date) 
+0

乍一看它的工作完美。輸出過去24小時內每小時的最後一條記錄。謝謝! – from

0

您可以按小時對數據進行分組,並選擇每小時最低的id。如果你加入對你的表子查詢 - 你會得到期望的結果

select d1.* 
from data d1 
join 
(
    SELECT min(id) as id 
    FROM data 
    group by date(date), hour(date) 
) d2 on d1.id = d2.id 
WHERE d1.date >= now() - INTERVAL 1 DAY 
+1

它應該是'date'和'hour'要精確 –

+0

請說明您的答案。謝謝! – Dropout

+0

不適用於我...我沒有定義d1或d2 colums ....我只有一個名爲date的列(輸入timestamp,用作主鍵並自動填充CURRENT_TIMESTAMP)。 – from