我正在寻找一种在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?
答案 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