2011-02-17 63 views
9

我可以尝试通过PHP来做这件事,但我认为它可以简单地在mySQL中完成。我在mySQL中有多行,日期时间超过了几个小时。我想在这几个小时内返回每一分钟的计数。在几分钟的时间范围内获取mySQL行多个小时

GROUP BY MINUTE(date)

给了我60行,但它并没有给我计数01:00:00 - 一时01分00秒不同于02:00:00和2时00分01秒。

这怎么办?

+0

日期本身呢?你想将周日分钟和周一分钟分组在一起吗? – 2011-02-17 03:04:38

回答

14

MySQL的分钟功能是从字面上采取的分钟数和分组。尝试通过随后,小时,分钟分组:

GROUP BY HOUR(date), MINUTE(date) 
3

从MySQL存储日期/时间作为一个完整的数,除以100的数量会给你分钟:

GROUP BY FLOOR(`data`/100) 

按数字分组更有效,然后按文本分组。

如果你一分希望,无论组日期:

GROUP BY FLOOR(`data`/100) % 10000 
+1

非常halpfull答案谢谢!:) 100010分钟 10000 1小时 20000 2小时 – Smoke 2014-11-21 06:53:44

11

老问题的新的答案!

要GROUP BY分钟,你可以简单地说:

SELECT (unix_timestamp(`date`) - unix_timestamp(`date`)%60) groupTime, count(*) 
FROM yourTable 
# WHERE clause 
GROUP BY groupTime 

有了这个解决方案,你会用一个小时,一天的同一分钟的日期时间一分钟从未混合日期时间,...

此外,这是一个演变的解决方案,因为通过将“60”更改为另一个数字,您可以分组几分钟(120),一天(86400),...

+0

一个主侧面效益该解决方案是,如果你存储的时间戳,而不是日期,那么你可以删除UNIX_TIMESTAMP()部分,仍然以分钟为单位,例如 - 惊人的! – 2017-05-18 10:20:56

相关问题