Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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 - Fatal编程技术网

SQL Server查找开始时间和结束时间之间的时间段

SQL Server查找开始时间和结束时间之间的时间段,sql,sql-server,Sql,Sql Server,SQL Server,如何从计划表中查找时间段,就像我需要输出第一列的结束时间和下一列的开始时间一样 select s, e, Max(cid)as c_id, ROW_NUMBER()OVER(order by CAST(s as datetime)) as row_id from classroom where Room like '3310' and Days like '%T%' group by s,e order by CAST(s as da

SQL Server,如何从计划表中查找时间段,就像我需要输出第一列的结束时间和下一列的开始时间一样

 select 
    s, e,
    Max(cid)as c_id,
    ROW_NUMBER()OVER(order by CAST(s as datetime)) as row_id
 from classroom 
 where Room like '3310' and Days like '%T%' 
 group by s,e
 order by CAST(s as datetime)
例如:

s       e       c_id    row_id
------- ------- ------- ------
9:30    10:45   235     1
11:00   12:15   236     2
12:30   13:45   238     3
14:00   15:15   1415    4
15:30   16:45   273     5
17:00   18:15   270     6
我需要输出

10:45-11:00
12:15-12:30
13:45-14:00

谢谢,您可以在临时表中插入数据,然后查询该临时表

select s,e,Max(cid)as c_id,
    ROW_NUMBER()OVER(order by CAST(s as datetime))as row_id 
into #t
from classroom 
where Room like '3310' and Days like '%T%' 
group by s,e 
order by CAST(s as datetime)


select t1.e, t2.s
from #t t1 
    INNER JOIN #t t2 on t1.row_id + 1 = t2.row_id

如果你只想知道一节课结束和下一节课开始之间的时间间隔,请在Abhi的答案中添加
where t2.s>t1.e
。如果您需要最小大小的插槽,比如15分钟,请使用
where-DATEDIFF(mi,t1.e,t2.s)>15