0

我想过滤时间 我有记录 我写过这样的查询 查询将在 12:00 Pm 和 05:00 Pm 之间获取时间

Select cs_ClinicName , FromTime ,ToTime from #temp
WHERE (1=1) and
( FromTime between CONVERT(Time,'12:00') and CONVERT(Time,'17:00')
or
ToTime between CONVERT(Time,'12:00') and CONVERT(Time,'17:00') )

但它只过滤这条记录 Micolaj11111 09:00:00.0000000 13:00:00.0000000

我期望的是,根据记录,所有在下午 12:00 到下午 5:00 之间工作的诊所都必须在那个时间段 12:00 到 05:00 之间工作)

Clinic NAME                        FromTime            ToTime
Boyka                          09:00:00.0000000    18:00:00.0000000
Clinic Name                    10:00:00.0000000    18:00:00.0000000
sleek clini                    10:00:00.0000000    18:00:00.0000000
Life Clinic                    10:00:00.0000000    18:00:00.0000000
SAiClini                       09:00:00.0000000    18:00:00.0000000
jh                             10:00:00.0000000    19:00:00.0000000
Micolaj11111                   09:00:00.0000000    13:00:00.0000000
Dental Clinic                  10:00:00.0000000    19:00:00.0000000
Eye clinic                     09:00:00.0000000    18:00:00.0000000
ryan                           01:00:00.0000000    06:00:00.0000000
4

2 回答 2

1

你可以用这个

Select cs_ClinicName , FromTime ,ToTime from #temp

 where ((datepart(hh, FromTime) <= 12)  and (datepart(hh, ToTime ) >= 17))
于 2013-10-17T10:48:53.433 回答
0

您的查询正在请求在给定范围之间具有开始或结束时间的所有记录。但是,您应该查看是否有任何开始早于或晚于提供的范围完成。如果您需要确定在整个时间范围内保持开放的任何诊所,请尝试以下操作:

Select * FROM #Temp
WHERE FromTime <= CONVERT(Time, '12:00') AND ToTime >= CONVERT(Time, '17:00')

如果您需要找到在给定时间范围内开放的任何诊所,请尝试

Select * FROM #Temp
WHERE CONVERT(Time,'12:00') <= ToTime
于 2013-10-17T10:40:54.503 回答