2014-12-19 1 views
0

Я создаю приложение бронирования отелей, и я хочу, чтобы пользователь, чтобы проверить, если определенный диапазон дат доступен или нет, например:Проверяется Особенная Дата не Перекрытие Любого диапазона в таблице

BookingID | StartingDate | EndDate 
    1  | 01/01/2014 | 10/01/2014 
    2  | 15/01/2014 | 20/01/2014 

Предположим, что это записи моей таблицы бронирования. Теперь, пользователь хочет, чтобы проверить этот диапазон дат:

(Предположив есть один номер в гостинице)

StartingDate = 11/01/2014 
EndDate  = 19/01/2014 

Как вы можете видеть, этот диапазон дат не доступен начиная с 15/01 до 20/01.

Как проверить, не совпадает ли диапазон дат с диапазонами дат в существующих записях?

ответ

2

Простой запрос:

SELECT COUNT(BookingID) 
FROM foo f 
WHERE f.StartingDate < to_date('19/01/2014') AND f.EndDate > to_date('11/01/2014'); 
1

Вы можете использовать эту логику:

select count(*) as NumOverlappingRecords 
from booking b 
where @StartingDate <= b.EndDate and 
     @EndDate >= b.startingDate; 

Вы хотите NumOverlappingRecords быть 0 для каких-либо конфликтов.

Смежные вопросы