iNN - eNews - SSS-Software
iNN - eNews - SSS-Software
iNN - eNews - SSS-Software
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
zu RPG, wo seit Release V5R3M0 ein Datum über die Built-in-Function %DEC(Datum:<br />
*Format) direkt in einen numerischen Wert konvertiert werden kann, bietet SQL keine direkte<br />
Lösung an.<br />
CREATE FUNCTION MySchema/CvtDateToNum (ParDate Date)<br />
RETURNS DECIMAL(8, 0)<br />
LANGUAGE SQL<br />
NOT DETERMINISTIC<br />
CONTAINS SQL<br />
CALLED ON NULL INPUT<br />
DISALLOW PARALLEL<br />
RETURN Cast(Year(ParDate) * 10000 +<br />
Month(ParDate) * 100 +<br />
Day(ParDate)<br />
as Dec(8 , 0 ));<br />
Beispiel 1: UDF CvtDateToNum ⇒ Konvertieren Datum in numerische Darstellung<br />
Alternativ könnte natürlich auch eine in RPG geschriebene Funktion, in der das Datum<br />
mit Hilfe der Built-in-Funktion %DEC(Datum: *Format) konvertiert wird als externe UDF<br />
registriert werden.<br />
Leider ist es auch heute noch so, dass in vielen älternen Anwendungen Datums-Werte in numerischer<br />
Form gespeichert werden. Mit Hilfe dieser UDF können auch in SQL Datums-Werte<br />
einfach in eine numerische Darstellung konvertiert werden.<br />
Das folgende Beispiel zeigt wie die UDF CvtDateToNum in einem SQL-Statement verwendet<br />
werden kann, um das Tages-Datum in numerischer Form aufzubereiten.<br />
Update MySchema/MyTable<br />
Set DateNum = CvtDateToNum(Current_Date)<br />
Where DateNum < CvtDateToNum(Current_Date);<br />
Beispiel 2: Verwendung der UDF CvtDateToNum<br />
Seit Release V5R3M0 bietet SQL außerdem mit der skalaren Funktion EXTRACT das<br />
Pendant zum RPG Operation Code EXTRCT bzw. zur Built-in-Funktion %SUBDT(). Bei der<br />
skalaren Funktion EXTRACT muss die gewünschte Datums- oder Zeit-Einheit als YEAR,<br />
MONTH, DAY, HOUR, MINUTE, SECOND und anschließend ein Datum, eine Zeit oder<br />
Zeitmarke oder eine entsprechende gültige alphanumerische Darstellung angegeben werden.<br />
Die Funktion EXTRACT liefert das gleiche Ergebnis wie die einzelnen skalaren Funktionen,<br />
mit folgender Ausnahme:<br />
• Das Ergebnis für Sekunden wird im Format 8,6 ausgegeben, wobei in den Dezimalstellen<br />
die Mikrosekunden ausgegeben werden.<br />
• Mikro-Sekunden können nicht als Zeit-Einheit angegeben werden, sondern werden über<br />
www.inn-online.de < Seite > Seite: 48