如何处理MySQL中的重叠日期?

时间:2011-06-18 00:40:07

标签: php mysql date time overlap

尝试建立一个带有项目的预订系统(即Beamers),现在我想用AJAX检查给定的item_id在给定的开始和结束用户期间是否可用

编辑:有点不清楚,我想用MySQL和PHP来做,AJAX只是我请求结果的方式(可用是/否)

我该怎么做?

我的表看起来像'这样':

reservation_id int PK
reservation_createDate datetime
reservation_startDate datetime
reservation_endDate datetime
item_id int FK(items.item_id)

假设我在数据库中已经有以下'保留': (为方便起见,所有item_id = 1)

reservation_id 1, item_id 1, from 2011-7-10 till 2011-7-14
reservation_id 2, item_id 1, from 2011-7-14 till 2011-7-16
reservation_id 3, item_id 1, from 2011-7-16 till 2011-7-20

并且用户想要在2011-7-12至2011-7-18之间保留item_id 1,正如您所看到的那样,由于所有3个预订都在路上,所以不会去。 我如何用MySQL做到这一点?

1 个答案:

答案 0 :(得分:3)

SELECT COUNT(*)<1 AS Available FROM `TABLE` WHERE (`startDate`>CHECKING_START_TIME AND `startDate`<CHECKING_END_TIME) OR (`endDate`>CHECKING_START_TIME AND `endDate`<CHECKING_END_TIME) OR (`startDate`<CHECKING_START_TIME AND `endDate`>CHECKING_END_TIME)

如果结果大于0,则存在重叠