@FeNiX1996l

Как найти записи за интервал даты?

Здравствуйте. Есть таблица с записями, у которых есть date_start и date_end (дата начала мероприятия и дата конца мероприятия) тип полей datetime
К примеру есть две записи
1. post_1
date_start = 2017-11-07 14:00:00
date end = 2017-11-12 17:00:00

2. post_2
date_start = 2017-11-05 12:00:00
date end = 2017-11-10 15:00:00

На странице с мероприятиями я хочу отфильтровать их по таким датам
с 2017-11-07 по 2017-11-09

Делаю такой запрос

SELECT * FROM `posts` WHERE 
`date_end` >= '2017-11-07' AND `date_end` <= '2017-11-09' 
OR
`date_start` >= '2017-11-07'  AND `date_start` <= '2017-11-09'


Выдает post_2
Почему сюда не попадает так же post_1?

Делаю потом такой запрос

SELECT * FROM `posts` WHERE 
`date_end` >= '2017-11-08' AND `date_end` <= '2017-11-09' 
OR
`date_start` >= '2017-11-08'  AND `date_start` <= '2017-11-09'


Ничего не выдает:)

Как отфильтровать мероприятия что бы они попали в промежуток, который я задаю.

Что бы при втором запросе, выдавало 2 записи т.к. эти мероприятия попадают сюда, т.к. они проходят в это время. Уже побывал сюда добавлять еще BETWEEN но чет все так же
  • Вопрос задан
  • 988 просмотров
Решения вопроса 1
@BorisKorobkov Куратор тега MySQL
Web developer
... WHERE
   date_start BETWEEN '2017-11-07' AND '2017-11-09'
   OR date_end BETWEEN '2017-11-07' AND '2017-11-09'
   OR (date_start < '2017-11-07' AND date_end > '2017-11-09')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы