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

Sql server 在SQL Server中,当开始时间大于结束时间时,如何获取开始时间和结束时间之间的小时数?,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我如何获得两个小时之间的小时数 开始时间='23:00:00.0000000' 及 结束时间='07:00:00.0000000' 在SQL SERVER中? 我尝试使用选择DATEDIFF(hour,'23:00:00.0000000','07:00:00.0000000'),但它返回负小时数-16 我希望结果是8小时。除了一些明显的问题,比如不知道上面所贴的你可以把这些时间混在一起。请记住,这将始终假定不到24小时 select DATEDIFF(hour, @StartTime, case

我如何获得两个小时之间的小时数

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

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

在SQL SERVER中? 我尝试使用
选择DATEDIFF(hour,'23:00:00.0000000','07:00:00.0000000')
,但它返回负小时数-16


我希望结果是8小时。

除了一些明显的问题,比如不知道上面所贴的你可以把这些时间混在一起。请记住,这将始终假定不到24小时

select DATEDIFF(hour, @StartTime, case when @EndTime < @StartTime then DATEADD(Day, 1, cast(@EndTime as datetime)) else @EndTime end) 
选择DATEDIFF(小时、@StartTime、case when@EndTime<@StartTime然后DATEADD(天,1,强制转换(@EndTime as datetime))或@EndTime end)
这是一种方法:

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
选择案例
当DATEDIFF(小时,'23:00:00','07:00:00')<0
然后是24+DATEDIFF(小时,'23:00:00','07:00:00')
ELSE DATEDIFF(小时,'23:00:00','07:00:00')
结束

如果没有日期,你怎么知道结果是8小时而不是-16小时?对不起,我编辑了我的问题。我正在尝试使用开始时间和结束时间(不带日期)获取小时数。你没有抓住要点。那么,我们怎么知道这只是一天,而不是2天、3天或4天?间隔是否始终包含24小时的时间段?如果是这样,您需要检查(案例)以查看开始时间>结束时间。如果是的话,你需要24个开始时间+结束时间。否则,只需取结束时间减去开始时间。是的,默认情况下,间隔始终为24小时。请您帮助我处理案例陈述。不确定为什么这会获得否决票,这是一种有效的方式为什么不获得绝对值?