2016-03-28 67 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