在MySQL中计算总时间持续时间

14

我有一张表格数据如下:

(int)   (time)  [mySQL datatype]

Id     Duration 
------------------
1      00:10:00
2      10:10:00
3      03:00:00
4      04:13:00
我想从这个表中计算总时长,我们该怎么做呢?例如 17:33:00。 请问有人能提供用于计算的 MySQL 查询吗?
1个回答

33
尝试将时间转换为秒,进行求和,然后再将结果转换回时间:
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(Duration)))
FROM Table1

结果:

17:33:00

但是它返回的结果是空的。 - A.P.S
@A.P.S:这可能是因为某些持续时间为NULL。在“FROM Table1”后添加“WHERE Duration IS NOT NULL”,问题就应该解决了。 - Mark Byers
1
嗨,Mark Byers,了解到这是一篇传奇帖子。只是我们注意到,如果时间格式(如hh:mm:ss)的值相加,当值超过60秒、60分钟时,可能会导致空值,以考虑为1分钟+或1小时+等。例如:02:45:30 + 01:38:40 = 总和将是03:84:10。使用CAST()函数返回的答案为(null)。也许这就是A.P.S可能遇到的问题。是的,通过添加WHERE子句来避免计算中的“真实”空值是很好的。所以我们必须进行长格式化。这是错误描述 - bonCodigo
@bonCodigo:您说得完全正确,谢谢!我已经更新了帖子。 - Mark Byers
谢谢。因为你的搜索结果是这些问题的第一个出现的 :) 虚拟引用 - bonCodigo
警告:TIME_TO_SEC() 会截断小数秒(请参阅MySQL文档)。因此,如果在 TIME(n) (n >= 1) 中使用小数秒,则总持续时间可能会出错。 - raubvogel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接