使用sql计算类型时间的总和

时间:2010-06-16 14:22:07

标签: sql mysql

如何计算我的结肠的时间总和,称为“时间花费”,格式为:HH:mm 在SQL?我正在使用MySQL。

我的专栏类型是时间。

它有这种结构

TimeFrom like  10:00:00           12:00:00     02:00:00
TimeUntil      08:00:00           09:15:00     01:15:00
Time spent      

total time 03:15:00

4 个答案:

答案 0 :(得分:69)

SELECT  SEC_TO_TIME( SUM( TIME_TO_SEC( `timeSpent` ) ) ) AS timeSum  
FROM YourTableName  

这对我有用。希望这会有所帮助。

答案 1 :(得分:4)

100%工作代码以获取MYSQL数据库的时间总和:

SELECT
SEC_TO_TIME( SUM(time_to_sec(`db`.`tablename`))) 
As timeSum
FROM
`tablename`

尝试并确认。 感谢。

答案 2 :(得分:0)

如果timeSpent列的数据类型为TIME,您应该能够使用以下查询:

SELECT SUM(timeSpent) 
  FROM YourTableName    -- replace YourTableName with the actual table name

但是,如果不是这种情况,您可能必须使用强制转换转换为Time数据类型。这样的事情应该有效:

SELECT SUM(timeSpent - CAST('0:0:0' as TIME)) 
  FROM YourTableName    -- replace YourTableName with the actual table name

答案 3 :(得分:0)

在MySQL中,你会做这样的事情来获得时间间隔:

SELECT TIMEDIFF('08:00:00', '10:00:00');

然后添加时间间隔,您可以:

SELECT ADDTIME('01:00:00', '01:30:00');

很遗憾,您没有存储日期或使用24小时制,因此这些计算结果不正确,因为TimeUntil实际上低于TimeFrom

另一种方法是(假设你解决上述问题)使用TIMESTAMPDIFF()将时间间隔存储为秒:

UPDATE my_table SET time_spent=TIMESTAMPDIFF(start, end));
SELECT SEC_TO_TIME(SUM(time_spent)) FROM my_table;