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?

questionAnswers(2)

yourAnswerToTheQuestion