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(小时、开始时间、结束时间)
结束时差
从你的桌子上
请分享您为解决此问题所做的努力。。