2012-09-19 64 views
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 
+0

不清楚......你能解释一下你如何得出结果吗? –

+0

您是否知道可能有助于计算两个日期之间差异的任何函数?你有没有试图在总秒内得到结果?你能想到如何从几秒钟到几分钟或几小时?提示:每分钟有60秒,一小时有3600秒。 –

+2

你所有的'HORA_E'值是否发生在同一天('1899-12-30')?你有没有看过使用'DATEDIFF()'得到总秒数,然后使用除法和模来得到你的小时,分​​钟和秒? – MatBailie

回答

1

这里有一个小更少的代码

样品表

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+假定由storing time only,日期部分将永远是1899-12-30。我知道德尔福使用那天的日期为0

相关问题