我想得到2次之间的时差。基本上是晚上9点到凌晨5点。
SELECT DATEDIFF(HOUR, '21:00', '05:00')
这是我要执行的查询,但返回16小时,尽管应该返回8小时。 有人可以帮忙吗?
答案 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;