2017-07-20 58 views
0

我正在使用mysql BETWEEN語句來查找日期之間的重疊。它會返回相當好的結果。但仍然有幾個問題我希望能夠解決。謝謝。使用mysql之間的日期重疊進行預約

這是我的測試數據庫

 
booking_id |venue_id |startdate | enddate 
1001  |3  | 2017-07-21 |2017-07-23 

這是我的查詢;我的概念是要麼查詢日期之一,所以它會返回true.so我使用OR來測試它們。

 
SELECT * FROM `booking` WHERE ('user_inputdate_1' BETWEEN startdate AND enddate) OR ('user_inputdate_2' BETWEEN startdate AND enddate)' 

我的測試結果

 
user_inputdate_1 user_inputdate_2 Result 
2017-07-19  2017-07-23   true 
2017-07-22  2017-07-24   true 
2017-07-21  2017-07-24   true 
2017-07-20  2017-07-24   false => this is the problem (it should be true) 

PS:如果有任何其他的方法來解決這個問題,我會接受他們。我一直在嘗試很多查詢,但他們不適合我。

最後,感謝您的全部努力。

回答

0

對於給定的輸入日期:

2017-07-20 & 2017-07-24

既不start date是大於或等於2017-07-21end date也是不小於或等於2017-07-23。這就是爲什麼結果false,這是正確的。

所以不是between,請嘗試:

WHERE 'user_inputdate_1' <= `enddate` 
OR 'user_inputdate_2' => `startdate`; 

編輯:缺少等於=標誌

+0

應該添加等號的both.anyways感謝爲解決對我來說,NW工作! WHERE'user_inputdate_1'<='enddate' OR'user_inputdate_2'> ='startdate'; – zlee