Guten Morgen,
in der Firma in der ich aktuell arbeite werden viele Datumsfelder als sammlung von decimals behandelt. Da dadurch häufig eine Konvertierung beim zugriff auf die DB2 notwendig ist habe ich eine UDF geschrieben.

Code:
-- Konvertiert 3 Zahlen zu einem Datum
create or replace function dateConverter(day decimal(2, 0), month decimal(2, 0), year decimal(4, 0)) returns date
    language sql
    fenced
    deterministic
    returns null on null input
    no external action
    not secured
    set option datFmt = *ISO
begin
    declare returnValue date default '1940-01-01';
    -- on conversion error
    declare continue handler for sqlstate '22007' 
        return null;
    
    set returnValue = date(digits(year) || '-' || digits(month) || '-' || digits(day));
    return returnValue;
end;
Die Funktion arbeitet grundsätzlich korrekt, jedoch ist sie nur in der Lage Daten vom 1940-01-01 - 2039-12-31 umzuwandeln. Nach einiger Recherche habe ich herausgefunden das bei verwendung des ISO-Datumsformat daten zwischen dem 0001-01-01 - 9999-12-31 verwendet werden können. Mein Ansatz war jetzt die sql option datFmt zu setzen. Das Ergebnis ist jedoch nicht zufriedenstellend, da bei enem Datum größer 2039-12-31 immer noch NULL ausgegeben wird. Habe ich etwas vergessen?

Vielen Dank für Ihre Hilfe.
Gruß x00