Usando um período variável em um intervalo no Postgres
Tenho uma relação que mantém os dados históricos mensais. Esses dados são adicionados à tabela no último dia de cada mês. Um serviço que estou escrevendo pode ser chamado de especificação de um mês e vários meses antes para o qual recuperar os dados históricos. Estou fazendo isso criando variáveis startDate e endDate e retornando dados entre os dois. O problema que estou enfrentando é que startDate é um número variável de meses antes de endDate e não consigo descobrir como usar um período variável em um interval
Aqui está o que eu tenho:
DECLARE
endDate TIMESTAMP := (DATE_TRUNC('MONTH',$2) + INTERVAL '1 MONTH') - INTERVAL '1 DAY';
startDate TIMESTAMP := endDate - INTERVAL $3 'MONTH';
Eu sei que a linha para startDate não está correta. Como isso é feito corretamente?