2014-12-19 21 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; 

你想NumOverlappingRecords0對於沒有衝突。

相關問題