Перевод с SQL Developer на PostgerSQL

Дали задание перенести VIEWs c Oracle на PostgerSQL:

SELECT ADD_MONTHS (TRUNC (SYSDATE), -46) + LEVEL  AS date_value
FROM DUAL
CONNECT BY LEVEL <= TRUNC (SYSDATE) - ADD_MONTHS (TRUNC (SYSDATE), -46) 

Выдает результат от даты которая была 46 месяцев назад до сегодняшней. Начал разбираться какие есть схожие функции в PosgreSQL, нашел что можно записать такой запрос:

select now()

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


Ответы (1 шт):

Автор решения: Ainar-G

Если вам просто надо вывести дату каждого месяца от нынешней даты до 46 месяцев назад, вы можете просто использовать generate_series:

SELECT date
  FROM generate_series(
         NOW()
       , NOW() - INTERVAL '46 months'
       , - INTERVAL '1 month'
       ) AS dates(date)
;
→ Ссылка