如何在SQL中计算2次之间的差异

Vik*_*kky 3 sql sql-server

我的表中有 2 列,即DutyHours(time(7))TimeSpentInOffice(time(7))

我如何计算这两个时间之间的差异?

datediff函数以小时、分钟、秒或天等形式返回,但不是按时间返回。

BIC*_*ube 5

DECLARE @null time;
SET @null = '00:00:00';

SELECT DATEADD(SECOND, - DATEDIFF(SECOND, End_Time, Start_Time), @null)
Run Code Online (Sandbox Code Playgroud)

参考:时差

编辑:根据评论,如果结束时间和开始时间之间的差异可能为负数,那么您需要使用case这样的语句

SELECT CASE
           WHEN DATEDIFF(SECOND, End_Time, Start_Time) <=0
           THEN DATEADD(SECOND, - DATEDIFF(SECOND, End_Time, Start_Time), @null)
           WHEN DATEDIFF(SECOND, End_Time, Start_Time) >0
           THEN DATEADD(SECOND,  DATEDIFF(SECOND, End_Time, Start_Time), @null)
       END AS TimeDifference
Run Code Online (Sandbox Code Playgroud)