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.
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?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;
Vielen Dank für Ihre Hilfe.
Gruß x00
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten

Bookmarks