在多个小时内以分钟的时间范围获取mySQL行

Rio*_*Rio 15 php mysql datetime date

我可以尝试用PHP做这个,但我认为它可以在mySQL中完成.我在mySQL中有行,日期时间超过几个小时.我想在这几个小时内返回每分钟间隔的计数.

GROUP BY MINUTE(date)

给了我60行,但它不会给我01:00:00 - 01:01:00的计数与02:00:00和02:00:01不同.

如何才能做到这一点?

bee*_*onk 26

MySQL分钟函数实际上是按分钟数和分组.尝试按小时分组:

GROUP BY HOUR(date), MINUTE(date)
Run Code Online (Sandbox Code Playgroud)


did*_*r2l 18

旧问题的新答案!

要按分钟分组,您可以简单地:

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

使用此解决方案,您永远不会将一分钟的日期时间与另一小时,日期的同一分钟的日期时间混合在一起......

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


irc*_*ell 15

只需使用DATE_FORMAT:

GROUP BY DATE_FORMAT(`date`, '%H:%i')
Run Code Online (Sandbox Code Playgroud)


The*_*ter 6

由于MySql将日期/时间存储为整数,因此将数字除以100将得到分钟:

GROUP BY FLOOR(`data` / 100)
Run Code Online (Sandbox Code Playgroud)

按数字分组比按文本分组更有效。

如果要按分钟分组而不考虑日期:

GROUP BY FLOOR(`data` / 100) % 10000
Run Code Online (Sandbox Code Playgroud)