SUM hours.minutes为总正确小时数。分钟

时间:2017-09-23 17:58:46

标签: mysql time sum

我正在寻找一个字符串(mysql),它可以总计几个小时。分钟,总时间正确。我找不到任何合适的东西。

示例:

id|  time_spent|
1 |  10.15     |
2 |  10.15     |
3 |  10.15     |
4 |  10.15     |
5 |  10.15     |

我可以通过以下方式总结:

Select sum(time_spent) as total_hours from table

但结果是:50:75,但应该像 51:15

我也试过这个:

SELECT SEC_TO_TIME( SUM( SEC_TO_TIME( `time_spent` ) ) ) 
AS total_time FROM table

但结果是: 00:00:50

SELECT SEC_TO_TIME(SUM(SECOND(time_spent))) AS total_time FROM 
table

但结果是: 00:00:50.750000

是否有可能从上述记录中获得总计正确的小时数。

2 个答案:

答案 0 :(得分:1)

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, t TIME NOT NULL);

INSERT INTO my_table (t) VALUES 
('10:15:00'),
('10:15:00'),
('10:15:00'),
('10:15:00'),
('10:15:00');

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(t))) x FROM my_table;
+----------+
| x        |
+----------+
| 51:15:00 |
+----------+

答案 1 :(得分:1)

我的建议也是使用适当的数据类型(如time)。但如果你坚持使用varchar这个想法,你可以用几秒钟的时间来转换你的时间,然后把它总结并转换回来。

TIME_TO_SEC期望格式为HH:MM,但你有一些花哨的浮点数,所以你最好的镜头就是解析:

TIME_TO_SEC(SUM(STR_TO_DATE(time_spent,'%H.%i')));