2017-07-20 20 views
0

mysql BETWEENのステートメントを使用して日付間の重複を検索しています。これはかなり良い結果を返します。しかし、まだ解決できると思う問題はほとんどありません。ありがとうございます。予約目的の日付オーバーラップのためのmysqlの使用

これは、これは私のクエリで

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

をテストするための私のデータベースです。私のコンセプトは、日付のいずれかのクエリをヒットtrue.so私はそれらをテストするために使用しているので返すことです。

 
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 date2017-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

関連する問題