2017-07-31 172 views
0

有時候你會經歷一次思維凍結,並認爲你是如何做到這一點的。我正在執行下面的SQL,並需要特定格式的答案,但無法解決。減去日期時間偏移值

SELECT DATEDIFF (mm, '2017-03-07 14:00:00.0000000 +00:00' , '2017-03-07 12:45:00.0000000 +00:00') 

需要在這種格式的答案? 01:15:00.0000000(hh:mm:ss.0000000)

任何想法?

+0

我假設你的意思是 「米」 爲分鐘,你有個月。鑑於此,這讓你更接近:'SELECT DATEADD(mi,ABS(DATEDIFF(MINUTE,'2017-03-07 14:00:00.0000000 +00:00','2017-03-07 12:45:00.0000000 +00 :00')),0)' – CaseyR

回答

1

還有另一個選擇:

Declare @D1 varchar(50) = '2017-03-07 12:45:00.0000000 +00:00' 
Declare @D2 varchar(50) = '2017-03-07 14:00:00.0000000 +00:00' 

SELECT format(dateadd(Second,datediff(SECOND,convert(datetime2,@D1),convert(datetime2,@D2)),0),'HH:mm:ss.0000000') 

返回

01:15:00.0000000 
+0

正確答案。謝謝其他2名響應者,但這是唯一能夠提供所需內容的人。 –

+0

@JamesKhan對它有幫助 –

1

使用convert

SELECT CONVERT(TIME, COLUMN1 - COLUMN2) 
FROM TABLE 
1

假設你的時間跨度可能超過24小時,你有沒有要求天#,只有個小時,你可以用這個。

declare @StartDate varchar(64) = '2017-03-05 12:45:00.0000000 +00:00' 
declare @EndDate varchar(64) = '2017-03-07 14:00:00.0000000 +00:00' 

declare @seconds int = DATEDIFF(second,@StartDate,@EndDate) 


SELECT 
    RIGHT('00'+CAST(@seconds/3600 AS VARCHAR), 2) + ':' + 
    RIGHT('00'+CAST(@seconds/60 AS VARCHAR), 2) + ':' + 
    RIGHT('00''00'+CAST(@seconds % 60 AS VARCHAR) , 2) + 
    CAST(0000000 AS VARCHAR(7)) AS [HH:MM:SS:MS]