DATEDIFF小时选项不占多天

时间:2014-03-27 13:26:15

标签: sql sql-server

我有两个日期,我需要与小时的差异

2014-03-25 00:00:00.000我们将此字段称为A

2014-03-24 16:14:00.000 - (这是添加小时和分钟的计算日期)这将是fieldB

我做了 DateDiff(hh,FieldA,FieldB) 它返回-8。 我希望它能恢复前一天的小时数。

当我跑2014-03-25 16:29:00.000和2014-03-25 00:00:00.000我得到16个小时,这是正确的

2 个答案:

答案 0 :(得分:2)

投入时间并仅对时间值进行约会。

declare @D1 datetime
declare @D2 datetime

set @D1 = '2014-03-25 00:00:00.000'
set @D2 = '2014-03-24 16:14:00.000'

select datediff(hour, cast(@D1 as time(0)), cast(@D2 as time(0)))

结果:

16

SQL Server 2005

select datediff(hour, dateadd(day, -datediff(day, 0, @D1), @D1), dateadd(day, -datediff(day, 0, @D2), @D2))

答案 1 :(得分:2)

如果您只是想要时间差异,请考虑以下事项:

DECLARE @d1 datetime = '2014-03-25 00:00:00.000'
DECLARE @d2 datetime = '2014-03-24 16:14:00.000'

SELECT DATEDIFF(hh, DATEADD(d, DATEDIFF(d, @d1, @d2), @d1), @d2)