2012-09-11 136 views
1

可能重複:
Efficient way to convert second to minute and seconds in sql server 2005SQL - 秒以日,時,分,秒

我有一個需要返回在日,時,分,秒第二查詢格式。

下面的代碼工作正常時,它不到一天的時間,但不工作,當在第二值超過一天較大

PRINT Convert(VarChar, DateAdd(S, 86400, 0), 108) 

86400正好是一天返回00:00: 00

有人可以修改它,並告訴我的結果是這樣的

1:00:00:00. 

感謝

+0

爲什麼你使用'DateAdd'呢?你需要簡單的整數除法和模運算。看到[這個問題](http://stackoverflow.com/q/2316288/62576),你幾乎重複。 –

+1

當然,並非所有的日子都是24小時,所以這就是爲什麼沒有一種標準的方式來執行這種轉換。 –

回答

7

如何:

declare @days int, 
     @dt1 smalldatetime = '2012-03-25 03:24:16', 
     @dt2 smalldatetime = getdate() 

set @days = datediff (s, @dt1, @dt2) 


SELECT convert(char(10), @days/(60 * 60 * 24)) + ':' 
+ convert(char(10), dateadd(s, @days, convert(datetime2, '0001-01-01')), 108) 

Result -- 170:20:40:00 

SQL Fiddle with Demo

+1

爲我的項目提供了一個很好的解決方案,但是你如何在SQL DB中存儲這個結果? – htm11h

+0

@ htm11h您可以將開始和結束日期時間或開始時間和持續時間(本例中爲秒)存儲爲int或bigint。結果實際上是一個字符串,僅用於顯示和格式化目的,它不是您需要存儲在數據庫中的東西。在一些數據庫中有實時的數據類型,但並不重要。 – Davos

4

試試這個:

declare @seconds int=87500; 

select cast(@seconds/86400 as varchar(50))+':'+ 
    Convert(VarChar, DateAdd(S, @seconds, 0), 108) 

結果

1:00:18:20