小编典典

计算具有Time数据类型的列的SUM:

sql

我想计算具有时间数据类型的字段的总和。

我的桌子在下面:

         TableA:

            TotalTime
          -------------
             12:18:00
             12:18:00

在这里,我想对两个时间字段求和。我尝试了以下查询

   SELECT CAST(
              DATEADD(MS, SUM(DATEDIFF(MS, '00:00:00.000', 
                CONVERT(TIME, TotalTime))), '00:00:00.000'
               ) AS TOTALTIME) 
    FROM [TableA]

但是它给出的输出为

            TOTALTIME
        -----------------
         00:36:00.0000000

但是我的期望输出将如下所示:

            TOTALTIME
        -----------------
            24:36:00

如何获得此输出?


阅读 207

收藏
2021-05-05

共1个答案

小编典典

您可以求和总计秒数,或datediff(second,0,datecolumn)。您可以使用一些数学将其格式化为时间字符串。例如,总分钟数为totalseconds/ 60 % 60。例如:

select  cast(sum(datediff(second,0,dt))/3600 as varchar(12)) + ':' + 
        right('0' + cast(sum(datediff(second,0,dt))/60%60 as varchar(2)),2) +
        ':' + right('0' + cast(sum(datediff(second,0,dt))%60 as varchar(2)),2)
from    TestTable

SQL Fiddle上的工作代码。

2021-05-05