让我们考虑一个存储班次详细信息的表
请检查 SQL 查询以生成表并根据输入(时间)查找时间表
声明表变量
declare @MyShiftTable table(MyShift int,StartTime time,EndTime time)
将值添加到表变量
insert into @MyShiftTable select 1,'01:17:40.3530000','02:17:40.3530000'
insert into @MyShiftTable select 2,'09:17:40.3530000','03:17:40.3530000'
insert into @MyShiftTable select 3,'10:17:40.3530000','18:17:40.3530000'
使用名为“Flag”的附加字段创建另一个表变量
declare @Temp table(MyShift int,StartTime time,EndTime time,Flag int)
通过交换开始和结束时间向临时表添加值
插入@Temp 选择 MyShift,case when (StartTime>EndTime) then EndTime else StartTime end,case when (StartTime>EndTime) then StartTime else EndTime end,case when (StartTime>EndTime) then 1 else 0 end from @MyShiftTable
创建输入变量以查找 Shift
declare @time time=convert(time,'10:12:40.3530000')
查询以查找与提供的时间相对应的班次
从@Temp 中选择 myShift,其中
(@time 在 StartTime 和 EndTime 之间且 Flag=0)或(@time not 在 StartTime 和 EndTime 之间且 Flag=1)