如何在SQL Server中获取开始时间大于结束时间的开始和结束时间之间的小时数?

时间:2014-10-17 15:45:59

标签: sql-server sql-server-2008

如何获得

之间的小时数
  

开始时间=' 23:00:00.0000000'

  

结束时间=' 00:00:00.0000000'

SQL SERVER中的

? 我尝试使用select DATEDIFF(hour, '23:00:00.0000000','07:00:00.0000000'),但它返回负数小时 -16

我希望结果 8 小时。

2 个答案:

答案 0 :(得分:1)

这是一种方式:

SELECT CASE 
            WHEN DATEDIFF(HOUR,'23:00:00','07:00:00') < 0 
                THEN 24 + DATEDIFF(HOUR,'23:00:00','07:00:00')
            ELSE DATEDIFF(HOUR,'23:00:00','07:00:00')
        END

答案 1 :(得分:0)

除了明显的问题,不知道上面发布了多少小时,你可以将它们整合在一起。请记住,这总是假设不到24小时。

select DATEDIFF(hour, @StartTime, case when @EndTime < @StartTime then DATEADD(Day, 1, cast(@EndTime as datetime)) else @EndTime end)