在SQL中减去小时数

Man*_*ndi 1 sql t-sql sql-server

我在DB中有几个小时(06:42,9:30,...).我想从08:00减去小时数

我尝试了以下查询

Select totalhrsinside as hour,convert(varchar, dateadd(minute, -8, totalhrsinside), 100) as diff from table_name
Run Code Online (Sandbox Code Playgroud)

但它没有按预期工作

输出应该是

hour    diff
06:42   -01:18 
09:30   01:30 
Run Code Online (Sandbox Code Playgroud)

Hon*_*ger 5

我认为你正在寻找时间上的差异,而不是减去或添加.

SELECT  Hours
,       CONCAT(
                    CASE WHEN SIGN(diff) = -1 THEN '-' END
                  , FORMAT(ABS(diff/60), '0#')
                  , ':'
                  , FORMAT(ABS(diff%60), '0#')
              ) diff
FROM    (
            SELECT  '6:42' Hours, DATEDIFF(MINUTE, '8:00', '6:42') diff UNION ALL
            SELECT  '9:30' Hours, DATEDIFF(MINUTE, '8:00', '9:30') diff 
        ) D
Run Code Online (Sandbox Code Playgroud)

结果:

+-------+-------+
| Hours | diff  |
+-------+-------+
| 6:42  | -01:18 |
| 9:30  | 01:30  |
+-------+-------+
Run Code Online (Sandbox Code Playgroud)