Как обрабатывать перекрывающиеся даты в MySQL? - PullRequest
2 голосов
/ 18 июня 2011

Im пытается создать систему резервирования с элементами (например, Beamers), теперь я хочу проверить с помощью AJAX, указан ли этот item_id во время заданных пользователей начала и окончания

edit: было немного неясно, я хочу сделать это с 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

И пользователь хочет зарезервировать item_id 1 с 2011-7-12 по 2011-7-18, который, как вы можете видеть, не будет выполняться из-за того, что все 3 резервирования мешают этому .. Как бы я сделал это с MySQL?

1 Ответ

3 голосов
/ 18 июня 2011
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, то перекрытие

...