Sql 如何获取24小时格式时间之间的日期差?

Sql 如何获取24小时格式时间之间的日期差?,sql,sql-server,Sql,Sql Server,我想得到两次之间的时差。基本上在晚上9点到早上5点之间 SELECT DATEDIFF(HOUR, '21:00', '05:00') 这是我试图执行的查询,但它返回了16个小时,尽管它应该返回8个小时。 有人能帮忙吗?一种方法是使用大小写表达式: SELECT CASE WHEN DATEDIFF(HOUR, '21:00', '05:00') >= 0 THEN DATEDIFF(HOUR, '21:00', '05:00') ELSE 24 + DATEDIFF(HOUR, '21

我想得到两次之间的时差。基本上在晚上9点到早上5点之间

SELECT DATEDIFF(HOUR, '21:00', '05:00')
这是我试图执行的查询,但它返回了16个小时,尽管它应该返回8个小时。
有人能帮忙吗?

一种方法是使用
大小写
表达式:

SELECT CASE WHEN DATEDIFF(HOUR, '21:00', '05:00') >= 0 THEN DATEDIFF(HOUR, '21:00', '05:00') ELSE 24 + DATEDIFF(HOUR, '21:00', '05:00') END;

你的问题是把时间压缩到下一个日期。我建议:

select (case when @start <= @end
             then datediff(hour, @start, @end)
             else 24 - datediff(hour, @end, @start)
        end) as diff_hours

您的查询应该返回-16而不是16。请选择第二个选项
select (24 + datediff(hour, @start, @end)) % 24