Использование 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`;
Отредактировано: Отсутствует равно =
знак