我需要以日期时间格式获取两个日期之间的差异:HH:mm:ss
。是否可以使用一些T-SQL功能?我总是使用DATEDIFF
但它只返回int
。
答案 0 :(得分:4)
declare @date1 datetime = '2012-08-04 12:10'
declare @date2 datetime = '2012-08-04 13:10'
select cast(@date2 - @date1 as time(0))
答案 1 :(得分:0)
简单地减去它们以获取日期时间值,然后按照您想要的格式进行格式化。
e.g。
select CONVERT(varchar(100), getdate(), 108)
您可以使用减法结果替换getdate()
。
答案 2 :(得分:0)
如果经过的时间超过24小时,结果将会产生误导(" mod"为24:00:00)。此代码段将包含作为时间前缀的天数。我已经包括计算前向和后向间隔。
declare @date1 datetime,@date2 datetime
set @date1 = '2013-01-02 12:01:02'
set @date2 = '2013-01-03 22:00:00'
select
-- forward interval
case when datediff(dd,@date1,@date2) != 0 then
cast(datediff(dd,@date1,@date2) as varchar)
+ 'd ' + convert(varchar(100), @date1-@date2, 108)
else
convert(varchar(100), @date1-@date2, 108)
end as ElapsedT1,
-- backward interval
case when datediff(dd,@date2,@date1) != 0 then
cast(datediff(dd,@date2,@date1) as varchar)
+ 'd ' + convert(varchar(100), @date2-@date1, 108)
else
convert(varchar(100), @date2-@date1, 108)
end as ElapsedT2
ElapsedT1 ElapsedT2
1d 14:01:02 -1d 09:58:58