D + 14 дней или D-14 дней в зависимости от значения в столбце - PullRequest
0 голосов
/ 05 октября 2018

Я хочу иметь возможность возвращать автомобили с датой регистрации + 14 дней и делать это каждый год.

Мы пытались с этим:

select *
from cars
where date(date_part('year', current_date)||'-'||date_part('month', 
registrationdate)||'-'||date_part('day', registrationdate)) = 
current_date + interval '14 days';

Но у нас возникли проблемы снапример, если у меня дата регистрации 2018-12-20, она не будет работать.

Есть лучшее решение?

Например, я получил это в данных:

id | registrationdate
1 | 2017-12-20
2 | 2018-01-15

и я хочу иметь возможность с SQL-запросом вернуть дату регистрации + 14 дней в году.В нашем примере необходимо вернуть первую строку при запуске запроса на 2018-01-03, 2019-01-03, 2020-01-03, ... и вернуть вторую строку при запуске запроса 2018-01-29, 2019-01-29, 2020-01-29, ...

1 Ответ

0 голосов
/ 08 октября 2018

Я даю вам решение, если оно может кому-то помочь:

select * 
from (
 select *, 
   (extract(year from age(registrationdate)) + 1) * interval '1 year' + interval '14 days' + registrationdate "next_rd_day"
  from cars
) as cars_with_upcoming_registration_date
where
extract(month from age(current_date, next_rd_day))=0 and extract(day from 
age(current_date, next_rd_day))=0

Создает новый столбец со следующим вхождением, основываясь на желаемом интервале и в том месте, где вам нужно просто проверить месяц и день.такие же и все нормально.Кроме того, он отлично работает с високосным годом и датой ближе к концу года.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...