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

时间:2012-03-19 16:11:37

标签: 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)
)

然而,上述似乎并不奏效。显然,我不需要/想要超出请求时间的房间(在请求的开始和结束之前开始和结束,或者在请求的开始和结束之后开始和结束)。但我确实需要那些在请求开始之前启动但在请求结束之前结束并在请求开始之后开始并在请求结束之后结束的那些。

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

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

2 个答案:

答案 0 :(得分:5)

请参阅this blog post获取解释,使用条件仅为:

where request_end >= start_time
and   request_start <= end_time

答案 1 :(得分:0)

我想我会为您的问题工作

(((\\“ TIMESTART \”在'“ + startTime +”'和'“ + endTime +”')或(\\ ENDTIME \“在'” + startTime +“'和'” + endTime +“')))”;