2012-09-19 63 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

相關問題