我可以尝试用PHP做这个,但我认为它可以在mySQL中完成。我在mySQL中有行,日期时间超过几个小时。我希望在这几个小时内返回每分钟间隔的计数。
GROUP BY MINUTE(date)
给了我60行,但它没有给我01:00:00 - 01:01:00的计数与02:00:00和02:00:01不同。
如何做到这一点?
答案 0 :(得分:23)
MySQL分钟功能实际上是按分钟数和分组。尝试按小时分组:
GROUP BY HOUR(date), MINUTE(date)
答案 1 :(得分:17)
旧问题的新答案!
要按分钟分组,您可以简单地:
SELECT (unix_timestamp(`date`) - unix_timestamp(`date`)%60) groupTime, count(*)
FROM yourTable
# WHERE clause
GROUP BY groupTime
使用此解决方案,您永远不会将一分钟的日期时间与另一小时,一天的同一分钟的日期时间混合......
另外,它是一种演变的解决方案,因为通过改变" 60"对于另一个号码,你可以分组(120),一天(86400),......
答案 2 :(得分:14)
只需使用DATE_FORMAT
:
GROUP BY DATE_FORMAT(`date`, '%H:%i')
答案 3 :(得分:5)
由于MySql将日期/时间存储为完整数字,因此将数字除以100将为您提供分钟:
GROUP BY FLOOR(`data` / 100)
按数字分组比按文本分组更有效。
如果您想按分钟分组,无论日期如何:
GROUP BY FLOOR(`data` / 100) % 10000
答案 4 :(得分:2)
对于那些搜索了相同结果但使用UNIX时间(从1970-01-01开始的秒数)的用户,可以使用:
SELECT
FROM_UNIXTIME(`unix_time`, '%Y-%m-%d %H:%i') as minute,
COUNT(id) as number_total
FROM my_table
GROUP BY minute
更多日期功能> https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html