2017-05-16 56 views
0

我需要根據date_begindate_end字段選擇所有預訂預訂。我有一個只顯示所選日期日曆10天的日曆。MySQL - 根據日期獲取預訂

2017-05-15 -> Date chosen by user 
2017-05-10 -> Date begin 
2017-05-20 -> Date end 

而且目前我的查詢如下:

SELECT * 
FROM bookings 
WHERE ((date_begin >= '2017-05-10' AND date_begin <= '2017-05-20') OR 
     (date_end >= '2017-05-10' AND date_end <= '2017-05-20')) 

現在,什麼情況是,90%,我保留意見就顯示在日曆和作品,但是有一個如果

如果預訂超過10天以上(這是日曆的限制),它只會在日曆中顯示,如果:

  1. date_begin存在於日曆或
  2. date_end存在日曆

這意味着在某些日期之間日曆中存在差距。

2017-05-15 -> Date chosen by user 
2017-05-10 -> Date begin 
2017-05-20 -> Date end 
2017-05-11 -> Date begin reservation 
2017-05-27 -> Date end reservation 
Shows in calendar? Yes 

2017-05-16 -> Date chosen by user 
2017-05-11 -> Date begin 
2017-05-22 -> Date end 
2017-05-11 -> Date begin reservation 
2017-05-27 -> Date end reservation 
Shows in calendar? Yes 

2017-05-17 -> Date chosen by user 
2017-05-12 -> Date begin 
2017-05-23 -> Date end 
2017-05-11 -> Date begin reservation 
2017-05-27 -> Date end reservation 
Shows in calendar? No! 

2017-05-18 -> Date chosen by user 
2017-05-13 -> Date begin 
2017-05-24 -> Date end 
2017-05-11 -> Date begin reservation 
2017-05-27 -> Date end reservation 
Shows in calendar? No! 

2017-05-21 -> Date chosen by user 
2017-05-16 -> Date begin 
2017-05-27 -> Date end 
2017-05-11 -> Date begin reservation 
2017-05-27 -> Date end reservation 
Shows in calendar? Yes 

我該如何改進我的查詢?

回答

0

我認爲你正在嘗試這樣做。

SELECT * 
FROM bookings 
WHERE date_begin <= '2017-05-20' AND date_end >= '2017-05-10' 
0

Linesofcode-
這個討論有關 datetime應該工作。
(StartDate1 <= EndDate2) and (StartDate2 <= EndDate1)
感謝Ian Nelson