2011-12-08 144 views
2

我試圖過濾在過去24小時內每小時發現的行數。通過過去24小時的時間戳過濾結果

我正在使用以下SQL查詢,'landtime'是一個DateTime字段。

SELECT HOUR(landtime) as hour, COUNT(*) as total FROM ord_log WHERE landtime > DATE_SUB(NOW(), INTERVAL 24 HOUR) GROUP BY HOUR(landtime) ORDER BY HOUR(landtime) 

樣本數據集>http://pastebin.com/0rYBnePG

結果看上去如預期,直到我看着它被使用的數據。

它是從今天的日期之前的幾天/星期,當我只想要過去24小時的計數拉日期。

任何幫助表示讚賞!

+0

該查詢將正常運行,我認爲別的東西可能是錯誤的。請從'ord_log'發佈一些示例數據,您期望的查詢結果以及您所獲得的查詢結果。謝謝! –

+0

請參閱評論添加到Ryans回覆。 – CelebornThingol

+0

我將您的示例數據添加到數據庫並運行您提出的查詢。它運行良好。它只查看過去24小時的行數。 –

回答

-2

無需使用功能,只需用簡單的數學:

SELECT HOUR(landtime) as hour, COUNT(*) as total FROM ord_log WHERE landtime > (CURRENT_TIMESTAMP - INTERVAL 1 DAY) GROUP BY HOUR(landtime) ORDER BY HOUR(landtime) 
+0

謝謝你,瑞安,看起來更簡單,但仍然沒有提供我所期望的。請在我的原始問題中查看添加的數據集。我希望它在7號小時05回到實例156。 – CelebornThingol

0
SELECT * FROM table WHERE day(data) = EXTRACT(day FROM (NOW() - INTERVAL 1 day))