使用MySQL的时间列的SUM()

时间:2016-07-05 13:27:25

标签: mysql date datetime

我试图创建一个查询来总结按用户分组的时间,结果应该是几分钟。

表的内容:

duration user 00:06:00 user1 00:06:00 user2 00:04:00 user3 00:01:00 user55 00:02:00 user1 00:01:00 user2 00:01:00 user55

预期结果:

duration user 8 user1 7 user2 4 user3 2 user55

这离我越近越近:

SELECT user, SEC_TO_TIME( SUM( TIME_TO_SEC( {持续时间{1}}

然而,这会将结果输出为000:00:00,在某些情况下,结束于838:59:59。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

    mysql> SELECT MINUTE(SEC_TO_TIME(SUM(TIME_TO_SEC( duration)))) 
  as tt ,user from tt group by user;
    +------+--------+
    | tt   | user   |
    +------+--------+
    |    8 | user1  |
    |    7 | user2  |
    |    4 | user3  |
    |    2 | user55 |
    +------+--------+
    4 rows in set (0.00 sec)

答案 1 :(得分:1)

TIME_TO_SEC只会转换时间段,因此如果时钟超过午夜,您最终会产生大的负片。使用UNIX_TIMESTAMP来代替总和。同样SEC_TO_TIME最大值大于3020399秒,例如SELECT TIME_TO_SEC(SEC_TO_TIME(3020400));如果您看到此值838:59:59您已达到最大值,可能只需要除以3600即可显示小时数。