2017-07-31 119 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]