2017-07-14 187 views
-1

我需要檢查房間(房間1)的輸入時間表(日期時間)是否與房間(房間1)的時間表(同一時間表或不在範圍內)衝突已被保留。我有這個疑問:檢查日期時間輸入和數據庫日期時間

SELECT {Reserved}.[Id] FROM {Reserved} 
WHERE ('2017-07-14 8:00:00' between {Reserved}.[FromDate] and {Reserved}.[ToDate]) and 
     ('2017-07-19 12:00:00'between {Reserved}.[FromDate] and {Reserved}.[ToDate]) 

數據庫的樣本數據:

2017-07-14 8:00:00 
2017-07-17 12:00:00 

但問題是,它不會顯示任何內容。謝謝。

+3

標籤DBMS,提供更多的樣本數據(這是什麼表中?) – JohnHC

+1

@RahulKurup沒有理由不使用'between'在這種情況下。 – AlexanderMP

+0

你有ANDED條件,第二個顯然是在範圍之外。看起來你想比較兩個範圍:'start_1 <= end_2和end_1> = start_2' – dnoeth

回答

0

看起來要檢查兩個範圍重疊,邏輯是:

start_1 <= end_2 and end_1 >= start_2 

根據你的需要可能並不需要的= /通緝。

這相當於

SELECT {Reserved}.[Id] 
FROM {Reserved} 
WHERE '2017-07-14 08:00:00' <= {Reserved}.[ToDate] 
    AND '2017-07-19 12:00:00' >= {Reserved}.[FromDate] 
相關問題