Использование mysql между для перекрытия даты в целях бронирования

Я использую mysql BETWEEN Заявление, чтобы найти перекрытие между датами. Это возвращает довольно хорошие результаты. Но все же есть несколько проблем, которые, я надеюсь, могут быть решены. Спасибо.

Это моя база данных для тестирования

booking_id |venue_id | дата начала | Дата окончания
1001       |3        | 2017-07-21 |2017-07-23

Это мой запрос; моя концепция - одна из дат, попавших в запрос, поэтому он вернет true. поэтому я использую OR для их проверки.

SELECT * FROM `booking` WHERE ('user_inputdate_1' МЕЖДУ начальной датой и конечной датой) ИЛИ ('user_inputdate_2' МЕЖДУ начальной датой и конечной датой)'

Мой результат тестирования

user_inputdate_1 user_inputdate_2 Результат 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 => это это проблема (это должно быть правдой)

PS: Если есть какие-то другие способы решить это, я приму их. Я пытался много запросов, но они не работают для меня.

Наконец, спасибо за все ваши усилия.

1 ответ

Решение

Для заданных дат ввода:

2017-07-20 & 2017-07-24

ни start date больше или равно 2017-07-21 а также end date также не меньше или равно 2017-07-23, Вот почему результат false, какой правильный.

Так что вместо between, пытаться:

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

Отредактировано: Отсутствует равно = знак

Другие вопросы по тегам