SQL Server的两个日期之间的区别

时间:2017-05-21 12:34:54

标签: sql sql-server

我正在寻找一种在SQL Server中获得两次差异的方法。

我想要一种格式hh:mm:ss

示例:23:00:00-18:09:00 = 04:51:00

我尝试使用datediff(),但它只返回小时,分钟或秒

[编辑]:

例如:23:00:00 + 02:00:00 = 01:00:00,如何获得25:00:00?

3 个答案:

答案 0 :(得分:2)

您可以转换为时间:

select dateadd(second, datediff(second, date1, date2), cast('0:00:00' as time))

然后,您可以使用format()convert()按照您希望的方式将值格式化为字符串。

答案 1 :(得分:1)

示例

Declare @T1 time = '23:00'
Declare @T2 time = '18:09'

Select cast(cast(@T1 as datetime) - cast(@T2 as datetime) as time)

<强>返回

04:51:00.0000000

或者如果2012 +

,您可以使用Format()
Select format(cast(@T1 as datetime) - cast(@T2 as datetime),'HH:mm:ss')

<强>返回

04:51:00

答案 2 :(得分:0)

虽然其他人已经正确回答。我想添加另一个版本。

declare @StartTime datetime, @EndTime datetime

select @StartTime = '08:40:18',@EndTime='18:52:48'

select  convert(varchar(5),DateDiff(s, @StartTime, @EndTime)/3600)+':'
    +   convert(varchar(5),DateDiff(s, @StartTime, @EndTime)%3600/60)+':'
    +   convert(varchar(5),(DateDiff(s, @StartTime, @EndTime)%60)) as [hh:mm:ss]

输出:10:12:30