Anmelden

View Full Version : sql num. Feld formatieren



rr2001
01-06-06, 13:35
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

Fuerchau
01-06-06, 13:41
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) )

rr2001
01-06-06, 14:17
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?

Fuerchau
01-06-06, 14:35
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.

rr2001
01-06-06, 15:01
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

Fuerchau
01-06-06, 15:14
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.

rr2001
01-06-06, 15:21
Vielen Dank,

es hat geklappt.

rr2001
11-07-06, 13:13
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.

JonnyRico
11-07-06, 13:28
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

rr2001
11-07-06, 14:10
vielen Dank

an Sascha

von RR