Use esta linha:
startDate TIMESTAMP := endDate - ($3 || ' MONTH')::INTERVAL;
e observe o espaço antes de
MONTH .Basicamente:você constrói uma string como 4 MONTH e converta-o com ::type em um intervalo adequado. Editar :Encontrei outra solução:você pode calcular com
interval assim:startDate TIMESTAMP := endDate - $3 * INTERVAL '1 MONTH';
Isso parece um pouco mais legal para mim.