如何在SQL Server 2008中减去两个时间值

时间:2016-05-05 12:21:58

标签: sql sql-server sql-server-2008

我有两个日期值:10:3​​0:00和15:59:00。

如何在SQL Server 2008的查询中获得小时和分钟的差异? 给05:29

并将其转换为十进制以给出5.29

4 个答案:

答案 0 :(得分:1)

我会得到分钟,然后使用算术处理剩下的时间:

select (datediff(minute, val1, val2) / 60) +
       (datediff(minute, val1, val2) % 60 / 100.0)

答案 1 :(得分:0)

试试这个

declare @date1 datetime
declare @date2 datetime

select @date1 = '00:25:10';
select @date2 = '23:05:10';

select cast(DATEDIFF(minute, @date1, @date2) / 60.0 as decimal(10,2))

答案 2 :(得分:0)

CREATE Function [dbo].[udf_Elapsed] (@Date1 DateTime,@Date2 DateTime)

Returns Varchar(150)
As

Begin
    Declare @sec int,@hour int,@minut int,@days int 
    SET @sec = DATEDIFF (SECOND,@Date1,@Date2)
    Set @days = @sec / 86400
    Set @sec = @sec - (@days * 86400)
    Set @hour = @sec / 3600
    Set @sec = @sec - (@hour * 3600)
    Set @minut = @sec / 60
    Set @sec = @sec - (@minut * 60)
    Return right(concat('000',@days),3)+':'+right(concat('00',@hour),2)+':'+right(concat('00',@minut),2)+':'+right(concat('00',@sec),2)
End


Select [dbo].[udf_Elapsed] ('2016-05-05 10:30','2016-05-05 15:59')

返回000:05:29:00 (days:hh:mm:ss)

答案 3 :(得分:0)

使用这样的DateDiff函数来获得结果。 enter image description here