2013-08-07 54 views
0

我正在運行查詢來查找用戶瀏覽的總時間。每個瀏覽會話以秒存儲在數據庫中,然後總計總秒數並將其轉換爲hh:mm:ss.問題是,當我將秒數轉換爲hh:mm:ss時。我想它顯示例如'78:20:00',但我不知道如何獲得代碼來完成它像這樣。當它過去24小時後,小時的專欄會回到00,因爲它會進入一天。無法獲得24小時以上的總時數,例如hh中的48小時:mm:ss輸出

我運行到時間轉換的查詢可以在下面看到:

SELECT Username, 
     CONVERT(VARCHAR(12),DATEADD(SECOND,TotalTimeInSeconds,0),108) AS TotalHours 
FROM #TotalSessionTime 
+3

爲什麼不把總數作爲數字返回? –

回答

1
SELECT USERNAME, 
     CAST(TotalTimeInSeconds/(60 * 60) AS Varchar) + ':' + 
     CAST(TotalTimeInSeconds % (60 * 60)/60 AS Varchar) + ':' + 
     CAST(TotalTimeInSeconds % (60) AS Varchar)   AS TotalHours 
    FROM #TotalSessionTime 

如果你想分秒永遠是兩位數字,你就必須離開墊他們,這將做一個醜陋的例子,但會工作得很好。

+1

這是一個小提琴:http://sqlfiddle.com/#!6/c5a11/1 – Curt

0

嘗試......

DECLARE @TimeInSeconds int = 123400; 
DECLARE @MyDate datetime; 
SELECT @MyDate = CONVERT(DateTime, DATEADD(SECOND, @TimeInSeconds, 0)) 
SELECT CONVERT(CHAR(2), (DAY(@MyDate)-1) * 24 + DATEPART(hour,@MyDate)) + ':' + CONVERT(CHAR(2), DATEPART(minute, @MyDate)) + ':' + CONVERT(CHAR(2), DATEPART(SECOND, @MyDate)) 

你要離開墊分鐘和秒零,以確保它是2位數,雖然。

相關問題