我正在寻找一个字符串(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
是否有可能从上述记录中获得总计正确的小时数。
答案 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')));