2015-07-10 4 views
0

Я строю простую форму бронирования. Скажем, я хочу заказать автомобиль с 2015-07-12 по 2015-07-21.MySQL найти любые записи между диапазоном дат

В базе данных у нас есть запись, что есть уже зарезервированный автомобиль (car_id 18) с 2015-07-15 по 2015-07-20.

Вот мой запрос, чтобы проверить, есть зарезервированный автомобиль:

SELECT * FROM `reservation` WHERE `reservation_from` <= '2015-07-12' AND `reservation_to` <= '2015-07-21' AND `car_id` = 18 

После запроса, я получил запись, что уже зарезервирован автомобиль. Все хорошо.

А теперь, допустим, я хочу заказать автомобиль с 2015-07-09 по 2015-07-19.

На этот раз я получил пустой результат. Но есть запись, что автомобиль зарезервирован с 2015-07-15 по 2015-07-20!

Я играл с <=>= операторами и не повезло.

Да, оба столбца имеют формат даты.

Что мне не хватает? Как получить эту запись, что есть уже заказанный автомобиль в выбранный диапазон дат?

И да, MySQL не является моей самой сильной стороной. Спасибо!

+0

возможно дубликат [Использование MySql между пунктом с датами] (http://stackoverflow.com/questions/16964740/using-mysql-between-clause-with-dates) – gabe3886

+0

Похоже, что здесь нет информации – Strawberry

+0

, так что если проблема заключается в том, чтобы сохранить автомобиль в течение предопределенного периода, есть ли у вас пример кода, с которого мы можем работать? – Viralwarrior012

ответ

0

Вы хотите любой перекрытие, а не полное перекрытие. Таким образом, логика:

SELECT * 
FROM `reservation` 
WHERE `reservation_from` <= '2015-07-21' AND 
     `reservation_to` >= '2015-07-12' AND 
     `car_id` = 18; 

То есть, нет автомобиля доступен, если оговорка начинается до окончания этого периода и заканчивается после начала периода.

+0

Ошибка синтаксиса в предложении 'AND' – Sadikhasan

+0

@ Sadikhasan. , , В первом предложении отсутствовала 'AND'. –

+0

Вот быстрая скрипка [ссылка] (http://www.sqlfiddle.com/#!2/a67a94/8), не может получить ваше предложение – skunks

0

Используйте следующий запрос:

SELECT * 
    FROM `reservation` 
    WHERE 
`reservation_from` <= '2015-07-21' AND 
`reservation_to` >= '2015-07-12' AND 
`car_id` = 18; 
+0

Я написал ответ, и тем временем он пишет тот же ответ –

Смежные вопросы