0

我需要以日期时间格式获取两个日期之间的差异:HH:mm:ss. 是否可以使用一些 T-SQL 函数?我一直用DATEDIFF,但它只返回int

4

3 回答 3

4
declare @date1 datetime = '2012-08-04 12:10'
declare @date2 datetime = '2012-08-04 13:10'

select cast(@date2 - @date1 as time(0))
于 2012-08-27T08:00:35.853 回答
0

只需将它们相减以获得日期时间值,然后按照您的需要进行格式化。

例如

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

您将在其中替换getdate()为减法的结果。

于 2012-08-27T07:59:18.553 回答
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
于 2014-01-03T17:42:05.517 回答