@7a-666

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

Надо выводить людей у которых в течении следующих 3 месяцев день рождение
Нам известно дата рождения людей
Все бы нечего но я не знаю как решить проблему с переходом на новый год потому-что если сейчас 1 месяц это одно но если сейчас 11 месяц то это другое и там будут разные уравнения причем это я ещё дни не учитывал
Подобных примеров не нашёл в доках тоже инфы которая бы мне помогла не нашёл

Казалось бы простая задача но я её не могу решить уже часов 5-ть можете подсказать кто знает куда надо смотреть чтобы сдвинуться с мертвой точки
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
@Vitsliputsli
with birthday as (
    select 'Ivanov' as name, date '1977-11-30' as birthdate
    union all
    select 'Petrov', date '1991-11-18'
    union all
    select 'Test', date '2000-01-01'
) 
select 
    name, birthdate 
from birthday
where 
    make_date(extract(year from date '2019-11-01')::integer,
              extract(month from birthdate)::integer,
              extract(day from birthdate)::integer) 
        between date '2019-11-01' and date '2019-11-01' + interval '3' month
    or
    make_date(extract(year from date '2019-11-01')::integer + 1,
              extract(month from birthdate)::integer,
              extract(day from birthdate)::integer) 
        between date '2019-11-01' and date '2019-11-01' + interval '3' month
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@bacon
Надо смотреть на функции работы с датами, например date_part. Так же можно погуглить готовое решение, например, "postgresql birthday query"
Ответ написан
leahch
@leahch
Я мастер на все руки, я козлик Элек Мэк :-)
Ваш ответ на вопрос

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

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