Sql 如何计算小时、分钟和秒的总和?

Sql 如何计算小时、分钟和秒的总和?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我需要使用Sql Server 2008计算小时、分钟和秒的总和 该字段仅包含时间值 输入 ID HORA_S -- ---------------------- 1 1899-12-30 18:22:50.000 2 1899-12-30 18:22:50.000 3 1899-12-30 18:30:50.000 HOURS MINUTES SECONDS ---- --- -------- 55 16 30 输出 ID

我需要使用Sql Server 2008计算小时、分钟和秒的总和

该字段仅包含时间值

输入

ID       HORA_S  
--  ----------------------
1   1899-12-30 18:22:50.000
2   1899-12-30 18:22:50.000
3   1899-12-30 18:30:50.000
HOURS  MINUTES SECONDS
----   ---     --------
55     16      30
输出

ID       HORA_S  
--  ----------------------
1   1899-12-30 18:22:50.000
2   1899-12-30 18:22:50.000
3   1899-12-30 18:30:50.000
HOURS  MINUTES SECONDS
----   ---     --------
55     16      30
在玩了这个代码后,我决定

SELECT  SUM(DATEPART(hh, CAST(HORA_S AS DATETIME))) 
        + ( SUM(DATEPART(MINUTE, CAST(HORA_S AS DATETIME))) / 60 )
        + ( SUM(DATEPART(MINUTE, CAST(HORA_S AS DATETIME))) % 60
        + ( SUM(DATEPART(SECOND, CAST(HORA_S AS DATETIME))) / 60 ) ) / 60 AS HORAS,
    ( SUM(DATEPART(MINUTE, CAST(HORA_S AS DATETIME))) % 60
        + ( SUM(DATEPART(SECOND, CAST(HORA_S AS DATETIME))) / 60 ) ) % 60 AS MINUTOS,
    SUM(DATEPART(SECOND, CAST(HORA_S AS DATETIME))) % 60 AS SEGUNDOS FROM Table

下面是一个代码少一点的工作示例

样本表

DECLARE @T TABLE (ID int, HORA_S datetime)
insert @T values
(1, '1899-12-30 18:22:50.000'),
(2, '1899-12-30 18:22:50.000'),
(3, '1899-12-30 18:30:50.000')


注意:查询中的2+假设通过
仅存储时间
,日期部分将始终为
1899-12-30
。我知道Delphi使用该日期作为日期
0

不清楚。您能解释一下如何得出结果吗?您知道有什么函数可以帮助计算两个日期之间的差异吗?您是否尝试在总秒数内获得结果?你能想到你如何从几秒钟到几分钟或几小时?提示:一分钟有60秒,一小时有3600秒。您的
HORA_E
值是否都发生在同一日期(
1899-12-30
)?您是否考虑过使用
DATEDIFF()
获取总秒数,然后使用除法和模运算获取小时、分钟和秒数?