我需要在SQL Server中以小时为单位的两次时间之间的时差

问题描述 投票:-2回答:3

我需要以小时为单位的两次之间的时差。我有start timeend time,如下所示:

Start time | End Time 
-----------+----------  
23:00:00   | 19:00:00    
23:00:00   | 07:00:00

我需要第一行的输出为20,第二行的输出为8。

sql sql-server time
3个回答
0
投票

使用DATEDIFF

SELECT
    start_time,
    end_time,
    24 + DATEDIFF(HOUR, start_time, end_time) AS diff_in_hours
FROM yourTable;

Demo


0
投票

使用select case

select case when start_time > end_time
    then datediff(hour, start_time , dateadd(hh, 24, end_Time)) 
    else datediff(hh, start_time , end_Time) end

0
投票

尝试一下:

Schema:

create table a(Starttime time,Endtime time)

INSERT INTO a VALUES ('23:00:00','19:00:00')
INSERT INTO a VALUES ('09:00:00','19:00:00')
INSERT INTO a VALUES ('23:00:00','07:00:00')

查询:

select Starttime,Endtime,
 CASE WHEN datediff(HOUR,Starttime,Endtime)<0 THEN 24+datediff(HOUR,Starttime,Endtime) 
      ELSE datediff(HOUR,Starttime,Endtime) END Diff
FROM A

输出:

|        Starttime |          Endtime | Diff |
|------------------|------------------|------|
| 23:00:00.0000000 | 19:00:00.0000000 |   20 |
| 09:00:00.0000000 | 19:00:00.0000000 |   10 |
| 23:00:00.0000000 | 07:00:00.0000000 |    8 |
© www.soinside.com 2019 - 2024. All rights reserved.