Annikangl
@Annikangl
Backend developer (PHP)

Как сделать выборку между двумя датами?

Есть таблица следующего вида:
CARS: id, title, year_start, year_end
year_start - год выпуска автомобиля ОТ, year_end - год выпуска автомобиля ДО

Я написал такой запрос:
select id, year_start, year_end from `cars`
where year_start >= 2014 AND year_end <= 2018

Однако этот запрос не совсем релевантный. Он не выдает мне записи, например, если у них year_start=2015, year_end = 2023 и так далее. Это логично. Но как мне сделать так, чтобы мой запрос выдавал все записи, который попадают в нужный мне диапазон дат?
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Показываю. Как сказать "Автомобиль НЕ выпускался с 2014 по 2018 годы?" Такое условие означает, что выпуск автомобиля закончен ранее 2014 или начался позднее 2018. Запишем:
year_end < 2014 OR year_start > 2018
Но нас интересует обратное условие:
NOT(year_end < 2014 OR year_start > 2018)
В принципе, работать будет и так. Но воспользуемся тождеством !(a | b) === (!a) & (!b) и приведём условие к виду:
year_end >= 2014 AND year_start <= 2018
Ответ написан
Комментировать
Adamos
@Adamos
Если вам нужны автомобили, которые выпускались в определенные годы, то вам нужно ИСКЛЮЧИТЬ те, которые ЗАКОНЧИЛИ выпускать ДО и те, которые НАЧАЛИ выпускать ПОСЛЕ. Всего лишь %)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы