计算具有Time DataType的列的SUM:

the*_*van 0 sql time select sum sql-server-2008

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

我的表在下面:

  TableA:

            TotalTime
          -------------
             12:18:00
             12:18:00
Run Code Online (Sandbox Code Playgroud)

在这里,我想总结两个时间字段.我尝试了下面的查询

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

但它给出了输出

            TOTALTIME
        -----------------
         00:36:00.0000000
Run Code Online (Sandbox Code Playgroud)

但我想要的输出如下:

            TOTALTIME
        -----------------
            24:36:00
Run Code Online (Sandbox Code Playgroud)

如何获得此输出?

And*_*mar 5

您可以将总秒数相加,或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
Run Code Online (Sandbox Code Playgroud)

SQL Fiddle的工作代码.