0

我需要使用 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

在玩弄了这段代码之后,我解决了!!!

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
4

1 回答 1

2

这是一个代码更少的工作示例

样品表

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')

;WITH T(V) AS (
    SELECT convert(datetime,SUM(convert(float, 2+hora_s)))
    FROM @T
)
SELECT
    [HOURS]   = floor(convert(float,V)*24),
    [MINUTES] = DATEPART(MI,V),
    [SECONDS] = DATEPART(SS,V)
FROM T

注意:查询中的 2+ 假定 by storing time only,日期部分将始终为1899-12-30。我知道 Delphi 使用该日期作为 day 0

于 2012-09-19T04:47:23.310 回答