2010-09-21 59 views
6

我有一張表,每行都有一個時間戳。有沒有可以運行的查詢可以計算每小時的行數。用包含行數的字段爲每個小時輸出一行?mysql每小時行數

id timestamp 

10 2010-09-19 21:05:05 

11 2010-09-19 22:05:30 

12 2010-09-19 23:05:05 

13 2010-09-19 23:05:05 

number of rows | hour 
1    21 
1    22 
2    23 

我猜有可能是用小時一樣會有重複的問題小時...所以也許「2010-09-19 21」或只是表示時間的數目(例如,在本例中2010-09-19 21 1)

TIA

回答

11

這取決於您的日期範圍有多大。如果所有的日期不在一個月之內,例如,你可以這樣做:

select day(timestamp) as Day, hour(timestamp) as Hour, count(*) as Count 
from MyTable 
where timestamp between :date1 and :date2 
group by day(timestamp), hour(timestamp) 

您可以按年份和月份團,以及如果需要進一步分離你的數據。

+0

+1您也可以使用TO_DAYS(),它是天的,因爲0年 – 2010-09-21 15:57:43

+0

@RedFilter你能告訴我們如何延伸到幾個月和幾年多少? – Mawg 2016-04-11 18:07:04

2
SELECT HOUR(hour) as hour, COUNT(*) as num_rows FROM `TABLE` GROUP BY HOUR(hour)