Узнайте, включает ли период времени какие-либо дни в декабре - PullRequest
2 голосов
/ 14 апреля 2020

Я столкнулся с проблемой Oracle SQL, которая гласит: «Фамилия и имя капитана списка тех, кто плавал в декабре». Что я знаю, так это то, что CAPTAIN является сущностью и имеет атрибуты start_date, end_date и других важных атрибутов. Мне нужно выяснить, что период времени содержит любой день в декабре. Кто-нибудь знает, как этого добиться?

Например:

start_date      end_date      result
2019-12-1       2019-12-8     YES
2019-10-1       2019-12-8     YES
2019-12-1       2020-2-8      YES
2019-5-8        2019-5-8      NO
2020-1-5        2020-2-8      NO
2019-11-1       2020-1-8      YES

1 Ответ

1 голос
/ 14 апреля 2020

Это должно сделать это:

select *
from mytable 
where end_date > add_months(trunc(start_date, 'yy'), 11)

Лог c предназначен для каждого start_date, чтобы проверить, является ли дата окончания (строго) больше, чем первое декабря в полночь, на того же года.

Демонстрация на DB Fiddle с вашими данными выборки:

START_DATE | END_DATE 
:--------- | :--------
01-DEC-19  | 08-DEC-19
01-OCT-19  | 08-DEC-19
01-DEC-19  | 08-FEB-20
01-NOV-19  | 08-JAN-20
...