Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server中两次之间的时间差(以小时为单位)_Sql_Sql Server_Time - Fatal编程技术网

SQL Server中两次之间的时间差(以小时为单位)

SQL Server中两次之间的时间差(以小时为单位),sql,sql-server,time,Sql,Sql Server,Time,我需要两次之间的时差,以小时为单位。我有开始时间和结束时间,如下所示: Start time | End Time -----------+---------- 23:00:00 | 19:00:00 23:00:00 | 07:00:00 我需要第一行的输出为20,第二行的输出为8。使用DATEDIFF: SELECT start_time, end_time, 24 + DATEDIFF(HOUR, start_time, end_time)

我需要两次之间的时差,以小时为单位。我有
开始时间
结束时间
,如下所示:

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

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

使用
DATEDIFF

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

使用
选择案例

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
试试这个:

模式:

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 |
查询:

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 |

根据您的要求查询,只需将表名放在“YourTable”处

选择开始时间
,结束时间
,案例
DATEDIFF(小时、开始时间、结束时间)小于0时
然后是24+DATEDIFF(小时、开始时间、结束时间)
ELSE DATEDIFF(小时、开始时间、结束时间)
结束时差
从你的桌子上

请分享您为解决此问题所做的努力。。