首页 > 解决方案 > 计算时间跨过午夜时的时差

问题描述

我正在尝试计算时间跨过午夜的时差。

(09:00pm 和 01:00am 之间的差异)

使用 Microsoft SQL,无法识别 datetrunc()。

目前使用的代码是 datediff(minute, S.Start_, S.End_)/60

标签: sqlsql-server

解决方案


最好的方法是将两个值都设置为 DateTime,然后您可以获得实际值,作为一种解决方法,您可以假设如果结束时间低于开始时间,则表示它指的是第二天,但它会受到限制到 23 小时(如果使用 <=,则为 24)

DECLARE @start TIME = '21:00'
DECLARE @end TIME = '01:00' 
SELECT DATEDIFF(HOUR, @start , @end) + CASE WHEN @end < @start THEN 24 ELSE 0 END

推荐阅读