使用日期时间偏移值减法

时间:2017-07-31 18:43:32

标签: sql sql-server

有时你会遇到心灵冻结,并想想你是怎么做到的。我正在执行下面的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)

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

使用CONVERT

SELECT CONVERT(TIME, COLUMN1 - COLUMN2)
FROM TABLE

答案 1 :(得分: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]

答案 2 :(得分: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