如何选择介于开始和结束时间之间的记录?

wbl*_*enc 1 sql oracle

我正在开发一个应用程序,它将保留会议室并需要我的查询一点帮助.当用户选择日期以及开始和结束时间时,我会进行ajax调用以查询数据库,以查看在该日期的该时间范围内是否有可用的会议室.这显然意味着所有各种可能性(在请求的开始时间之前开始并在请求的结束时间之后结束,在请求的开始时间之后开始并在请求的结束时间之前结束,等等)

我想做的事情如下:

SELECT room_id From table where ( 
(start_time >= request_start and end_time <= request_end) 
or 
(start_time <= request_start and end_time >= request_end)
or
(start_time >= request_start and end_time <= request_end)
or
(start_time <= request_start and end_time >= request_end)
)
Run Code Online (Sandbox Code Playgroud)

但是上面似乎没有用.显然,我不需要/想要超出请求时间的房间(在请求的开始和结束之前开始和结束,或者在请求的开始和结束之后开始和结束).但我确实需要那些在请求开始之前启动但在请求结束之前结束并在请求开始之后开始并在请求结束之后结束的那些.

逻辑似乎在逃避我.任何帮助将不胜感激!

另外,在旁注中,我想返回保留的room_id,因为上面是我用来选择不在返回的列表结果中的room_ids的子查询.

Ton*_*ews 5

有关解释,请参阅此博客文章,使用条件很简单:

where request_end >= start_time
and   request_start <= end_time
Run Code Online (Sandbox Code Playgroud)