2014-12-19 3 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 

(호텔 하나 개의 공간이 가정하면)

는이 날짜 범위는 20까지 15/01부터 사용할 수 없습니다/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; 

당신은 어떤 충돌 0NumOverlappingRecords를 원한다.