Как определить, перекрывает ли диапазон дат какую-либо часть определенного месяца? - PullRequest
1 голос
/ 16 ноября 2011

Вопросы такие.

Я хочу иметь список всех спектаклей, которые проходили в ноябре 1999 года. Неважно, начались ли мероприятия до ноября или закончились после ноября.

Таблица для Engagements - EA_Engagements, а имена полей -

  • StartDate
  • EndDate

Они оба в форме ДАТЫ.

Ответы [ 3 ]

5 голосов
/ 16 ноября 2011
select * 
from EA_Engagements 
where StartDate <= '1999-11-30' 
  and EndDate   >= '1999-11-01'
0 голосов
/ 16 октября 2013

Ответ «Недрет Реджеп» работал в моем случае с похожим, но другим сценарием. Я хотел выяснить, перекрывает ли данный диапазон дат какие-либо другие события в базе данных.

Table (Master Blocking Dates)
mbd_id  mbd_from_date   mbd_to_date mbd_reason
1   2013-10-16  2013-10-19  Demo Blocking 1
2   2013-10-21  2013-10-24  Demo2
3   2013-10-31  2013-11-04  Demo3

и мой запрос, основанный на предложении «Недрет Реджеп», был следующим:

SELECT * FROM ib_master_blocked_dates WHERE venue_id=$venue_id AND 
(
    (mbd_from_date BETWEEN '$from_date' AND '$to_date') 
        OR
    (mbd_to_date BETWEEN  '$from_date' AND '$to_date')
        OR
    ('$to_date' BETWEEN mbd_from_date AND mbd_to_date)
        OR
    ('$from_date' BETWEEN mbd_from_date AND mbd_to_date)
)

Результат:

mbd_id  mbd_from_date   mbd_to_date mbd_reason
1   2013-10-16  2013-10-19  Demo Blocking 1
2   2013-10-21  2013-10-24  Demo2
0 голосов
/ 16 ноября 2011

вот оно:

SELECT
    name, StartDate, EndDate
FROM
    EA_Engagements
WHERE
    StartDate BETWEEN '1999-11-01' AND '1999-11-30' OR
    Enddate BETWEEN  '1999-11-01' AND '1999-11-30'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...