Если вы используете Postgres, это довольно просто, используя generate_series()
select d::date as "date"
from generate_series(current_date,
current_date - interval '1 year',
interval '-1 month') as t(d)
, который возвращает «последние 12 месяцев», начиная с сегодняшнего дня.
Если сегодня 2019-10-18, возвращается:
date
----------
2019-10-18
2019-09-18
2019-08-18
2019-07-18
2019-06-18
2019-05-18
2019-04-18
2019-03-18
2019-02-18
2019-01-18
2018-12-18
2018-11-18
2018-10-18
Если вы хотите 30-дневные интервалы (а не 1 месяц), используйте:
select d::date as date
from generate_series(current_date,
current_date - interval '1 year',
interval '-30 day') as t(d)