SQL Server查找开始时间和结束时间之间的时间段
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
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