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

时间:2019-09-29 13:18:38

标签: sql sql-server

我想得到2次之间的时差。基本上是晚上9点到凌晨5点。

SELECT DATEDIFF(HOUR, '21:00', '05:00')

这是我要执行的查询,但返回16小时,尽管应该返回8小时。 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您的问题是时间到下一个日期的间隔。我建议:

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

您也可以这样表示:

select (24 + datediff(hour, @start, @end)) % 24

答案 1 :(得分:0)

一种方法是使用CASE表达式:

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;
相关问题