我在数据库中有一个名为 reservations 的表,其中包含以下列: id , date_from , date_to ,< EM> obj_id
在我的应用程序中,我需要创建一个sql查询,我可以在指定的日期范围内检查房间的可用性( obj_id )。
我试图使用类似下面的内容,但效果不佳:
select * from `reservations`
where ((`date_from` <= $from and `date_to` >= $from)
or (`date_from` <= $to and `date_to` >= $to)) and `obj_id` = $obj
例如,当某个房间从2013-07-03至2013-07-06保留时,2013-07-01至2013-07-07的日期将被视为免费
答案 0 :(得分:3)
您可以使用sql的 Between 子句来过滤两个给定日期之间的结果。有关详细信息,请参阅此link。
以下是您可以尝试查询的内容!
Select * from `Reservations` where $ToDate between date_from and date_to
OR date_to between $FromDate and $ToDate
OR $FromDate between date_from and date_to
OR date_from between $FromDate and $ToDate
AND `obj_id` = $obj;