从数据库中过滤时间

时间:2013-10-17 10:29:20

标签: asp.net sql-server-2008

我想过滤我有记录的时间 我写了这样的查询查询将在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至05:00之间 根据记录所有临床工作,在那个时间段12:00 Pm和05:00 Pm之间

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

2 个答案:

答案 0 :(得分:1)

你可以用这个

Select cs_ClinicName , FromTime ,ToTime from #temp

 where ((datepart(hh, FromTime) <= 12)  and (datepart(hh, ToTime ) >= 17))

答案 1 :(得分: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