2012-08-27 139 views

回答

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

+1非常好的解决方案! – davek

0

只需减去它们即可获得日期时间值,然后将其设置为您想要的格式。

例如

select CONVERT(varchar(100), getdate(), 108) 

在那里你会用你的减法结果代替getdate()

0

如果经过的时间超过24小时,结果将是误导(24:00:00的“mod”)。这段代码将包含天数作为时间的前缀。我已经包括计算前进和后退间隔。

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), @[email protected], 108) 
    else 
     convert(varchar(100), @[email protected], 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), @[email protected], 108) 
    else 
     convert(varchar(100), @[email protected], 108) 
    end as ElapsedT2 

ElapsedT1  ElapsedT2 
1d 14:01:02 -1d 09:58:58 
相关问题