View Full Version : sql num. Feld formatieren
werte Forenmitglieder,
folgendes Problem: Datum ist in Datenbank als num.
Feld gespeichert, Format CYYMMDD,
z. B. 1060531 für 31. Mai 2006.
Die "1" am Beginn kennzeichnet 21. Jhdt.
Wie kann man in einem SQL-Report daraus ein lesbares
Datumsfeld generieren.
Z.B. 06/05/31
Vielen Dank
etwas kompliziert, aber es geht:
date(substr(digits(mydate+19000000), 1, 4) concat '-' concat substr(digits(mydate+19000000), 5, 2) concat '-' concat substr(digits(mydate+19000000), 7, 2) )
s. g. Hr. Fürchau,
vielen Dank für die prompte Antwort.
Leider gibt das Ding nur ++++++++ im Datum aus.
Was habe ich falsch gemacht?
Du musst ggf. im STRSQL->F13->1 das datumsformat auf *ISO stellen.
Ausserdem funktioniert das nur, wenn das Feld auch tatsächlich das Format beinhaltet.
S.g. Hr. Fürchau,
das Datumsformat ist *ISO.
Hier die Ausgabe:
Auftrags- DATE
datum
1.060.601 ++++++++++
1.051.216 ++++++++++
1.051.214 ++++++++++
1.051.214 ++++++++++
1.060.117 ++++++++++
1.060.117 ++++++++++
1.060.124 ++++++++++
hier das Statement:
select apaqda,
date(substr(digits(apaqda+19000000), 1, 4) concat '-' concat substr(
digits(apaqda+19000000), 5, 2) concat '-' concat substr(digits(apaqd
a+19000000), 7, 2) ) from veafpol7
Ok, durch die Addition von 19000000 ergibt sich ein DEC(9, 0)-Feld an Stelle des 8-stelligen.
Beim substr musst du eben 1 stelle hinzufügen oder statt DIGITS eben CHAR nehmen.
Vielen Dank,
es hat geklappt.
Sehr geerhter Hr. Fuerchau,
kann man Ihr sql-Statement derart erweitern,
dass das date-Feld nur dann selektiert wird, wenn
das Datumsfeld in der Tabelle auch gefüllt ist?
Ansonsten wird bei leeren Datumsfelders immer
1900-00-01 angezeigt.
Vielen Dank für Ihre Hilfe.
Hi,
joh das geht mit CASE. Hier ein kleines Beispiel
Select CASE
When Datum Is Null Or Datum = 0 THEN
''
ELSE
'Hier die Datumsberechnung einfügen
END As MeinFeld
From MeineDatei
Gruß
Sascha
vielen Dank
an Sascha
von RR