Я написал следующий код, чтобы получать последние 4 года для каждой даты первого и конца месяца с текущей даты в db2.
WITH tempdateseries (StartDate,EndDate) AS (
SELECT
DATE(1) + (YEAR(CURRENT DATE)-5) YEARS AS StartDate,
LAST_DAY(CURRENT DATE - 4 YEARS) AS EndDate
FROM
sysibm.sysdummy1
UNION ALL
SELECT
StartDate + 1 MONTH,
EndDate
FROM
tempdateseries
WHERE
StartDate < LAST_DAY(CURRENT DATE - 1 MONTHS)
AND EndDate < LAST_DAY(CURRENT DATE - 1 MONTHS))
SELECT
*
FROM
tempdateseries