2014-01-07 110 views
1

我告訴你我在做什麼,然後告訴我什麼。如何按小時對mysql查詢結果進行分組?

現在:

SELECT COUNT(*) as `total`, `date` FROM `Events` GROUP BY HOUR(`date`) 

這回這樣的事情:

date  | Count 
1389105597 | 125 

這是我想有什麼,但我不知道如何:

date  | Count 
00:01  | 10 
01:02  | 13 
02:03  | 3 
(...) 
23:00  | 30 

回答

3

你日期似乎是一個unix時間戳 - 一個整數,代表自1970年1月1日以來的秒數。他們是不是一個MySQL日期/時間字符串,這是MySQL的大部分日期/時間函數所期望的。

嘗試以下操作:

SELECT count(*) AS total, HOUR(FROM_UNIXTIME(`date`)) AS hour 
... 
GROUP BY HOUR(FROM_UNIXTIME(`date`)) 

這會將時間戳轉換回本地MySQL的日期/時間值,你可以用它來從提取小時。

+0

你做到了!現在我添加這個:CONCAT(HOUR(FROM_UNIXTIME(date)),':00-',HOUR(FROM_UNIXTIME(date))+ 1,':00')AS Hours',看起來和我想象的完全一樣:)關於表現?關於此轉換 – user1148875

+0

有一些轉換費用。一般來說,最好將日期/時間存儲爲本地mysql日期和時間值,因爲從本地類型轉換這些小時/日期/任何轉換非常有效。添加from_unixtime轉換強制進行每次運行select時的轉換,這會導致大型表上的性能下降。 unix時間戳的優點在於它們是簡單的整數,如果你不需要從它們中提取日期組件,它們非常節省空間來存儲 –

+0

我看到;)也許最好重新考慮這個問題案件 – user1148875

相關問題