2016-03-28 53 views
-2

我有此列(DateTime類型)每分鐘/小時的數據PHP或SQL

Begin time 
=================== 
2015-12-04 00:00:06 
2015-12-04 00:00:09 
2015-12-04 00:00:10 
2015-12-04 00:00:13 
2015-12-04 00:00:18 
2015-12-04 00:00:22 
2015-12-04 00:00:33 
2015-12-04 00:00:47 
2015-12-04 00:01:00 
2015-12-05 00:01:00 
2015-12-05 00:01:07 
2015-12-06 00:01:09 
2015-12-06 00:01:11 
2015-12-06 00:01:32 
2015-12-06 00:01:34 
2015-12-07 00:02:00 
2015-12-07 00:02:59 

如何從柱和組像這樣得到每分鐘/每小時的數據:

Time     | Count 
00:00:00 - 00:00:59 | 8 
00:01:00 - 00:01:59 | 7 
00:02:00 - 00:02:59 | 2 
00:03:00 - 00:03:59 | 0 
... 
23:59:00 - 23:59:59 | 0 

我想它與Grouping into interval of 5 minutes within a time range不同,因爲我需要從每個日期獲取所有數據並將其總結爲1列。 例如,有在我的專欄兩個類似的數據具有不同的日期

Begin time 
================ 
2015-12-05 00:01:00 
2015-12-06 00:01:09 

從這個數據,我需要輸出的數據,如:

Time     | Count 
00:00:00 - 00:00:59 | 0 
00:01:00 - 00:01:59 | 2 
00:02:00 - 00:02:59 | 0 
00:03:00 - 00:03:59 | 0 
... 
23:59:00 - 23:59:59 | 0 

非常感謝您對您的所有幫助小夥子們!

+0

改變所有的'.'來'-'這樣你就可以在該列本身使用mysql日期函數無需任何轉換。那麼你可以使用'by date_format(time,'H'')'按小時對它進行分組,然後按'date by date_format(time,'%i')按分鐘排序';' – Ohgodwhy

+0

[Grouping間隔5分鐘內的時間範圍](http://stackoverflow.com/questions/4342370/grouping-into-interval-of-5-minutes-within-a-time-range) – Strawberry

回答

0

您可以使用DATE_FORMATGROUP BY吃出:

SELECT 
    DATE_FROMAT(col_date, '%H:%m:00 - %H:%m:59') AS `Time`, 
    COUNT(*) AS Count 
FROM .. 
GROUP BY `Time` 
+0

我仍然無法獲得所有日期的總結,但感謝順便說一句,非常感謝 – leviar

+1

如果您需要所有日期,即使沒有任何行,您需要先生成所有分鐘,即使沒有它們的項目。 –

+0

我實際上已經生成了一些函數的所有分鐘,我將顯示並關閉此問題,因爲有些人會認爲它看起來類似於http://stackoverflow.com/questions/4342370/grouping-into-interval-of-5分鐘內的時間範圍:3 – leviar