2

我在数据库中有一个名为reservations的表,其中包含以下列:iddate_fromdate_toobj_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 的日期视为免费

4

1 回答 1

3

您可以使用sql 的Between 子句来过滤两个给定日期之间的结果。有关详细信息,请参阅此链接
这是您可以尝试查询的内容!

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;
于 2013-07-10T08:25:34.353 回答