Anmelden

View Full Version : SQL: Aus mehreren Feldern ein Datum erkennen



I0N
21-11-06, 11:16
Hi zusammen,
ich hab als Azubi mal wieder ein Frage, eine kleine zwar aber Ihr kennt das ja
sicherlich: "Das muss doch besser gehen".

ich hab hier 3 Felder die folgendermaßen definiert sind und Datumsteile enthalten:
D1 DECIMAL 2 Tag
D2 DECIMAL 2 Monat
D3 DECIMAL 4 Jahr

Ich möchte da nun ganz gerne per Select ein richtiges Datum draus erkennen.

Per RPG ist das ja normalerweise kein Problem irgendein Zeichen-Feld zu nehmen und es per %date(string:*DMY0) in ein richtiges Datumsformat zu konvertieren,
aber wie in SQL ?

Als ich unter Zeitdruck mit einem Projekt war hatte ich in meinem SQLRPGLE folgendes gemacht:
TRIM(CHAR(D1)) concat '.' concat TRIM(CHAR(D2)) concat '.' concat TRIM(CHAR(D3)) as MyDATE

Was das ganze zwar nur Optisch aufwertet und höchst grausam ist, aber es hat damals seinen Zweck erfüllt. Mit der der SQL funktion DATE() und diversen concat versuchen hab ich auch schon experimentiert, aber immer nur ein Feld voller +++++++ erhalten.

Ich danke schon mal im Voraus für alle Tips und Tricks, ihr seid echt ein klasse Forum!:D

Fuerchau
21-11-06, 11:21
Mach ein ISO-Datum draus:

date(digits(d3) concat '-' concat digits(d2) concat '-' concat digits(d1)) as mydate

Die Anzeige (in STRSQL) gibt das Datum entweder im Job-Format oder als ISO aus (F13).
Im RPGLE sind H-Bestimmung sowie "set option" erforderlich.
Dies gilt nur, wenn das Datum ausserhalb der Range 1.1.1940 und 31.12.2039 ist.

I0N
21-11-06, 12:44
Ah :)

das sieht schon mal besser aus. Digits() kannte ich noch nicht.
Aber um die "concat '-' concat" kommt man nicht herum oder ?

ich hatte gehofft, es ginge sowas wie:

date(digits(D3) concat digits(D2) concat digits(D1))

aber das führt wieder zu ++++++.