PDA

View Full Version : Datumsfeld nur bis 2039 ???



pwrdwnsys
25-08-05, 16:27
Hallo,

Wir haben heute festgestellt, das ein Datumsfeld in der Datenbank Datumsangaben nur bis 2039 verarbeiten kann. Das sagt zwar auch die Dokumentation hier
http://publib.boulder.ibm.com/iseries/v5r2/ic2929/index.htm?info/db2/rbafzmstch2datetime.htm

Trotzdem scheint das Datum korrekt abgelegt zu werden. Habe es auf einer Maschine unter V5R2 mit dem fast neuesten PTF Stand ausprobiert. Dazu eine Tabelle angelegt, 1 Datumsfeld, und dieses einmal auf dem 01.01.2010 und den 01.01.2099 gesetzt. Der SQL-Select bringt folgendes Ergebnis

....+...
DAT1
++++++++
01.01.10
******** Datenende ********

Die ++++ Zeichen bedeuten einen Fehler im Feld. Wenn ich jedoch mit DSPPFM in die Tabelle schaue, dann sieht das schon besser aus.

Physische Teildatei anzeigen
:
*...+....1
2099-01-01
2010-01-01
****** DATENENDE ******

Das Datum wird anscheinden richtig abgelegt und nur beim Auslesen nicht sauber konvertiert.

Finde nix, wann das behoben wird. Oder kann man es umgehen ? Ich will zwar nicht mehr bis 2039 schaffen, aber trotzdem...

THX.

B.Hauser
25-08-05, 17:46
Das Datum in der Datenbank bzw. in einer Datei ist ein Binär-Wert, der immer korrekt ist. Was Du siehst (oder auch nicht siehst) ist eine alphanumerische Aufbereitung dieses Wertes.

Wenn es sich bei dem verwendeten Datums-Format um ein Format mit einer 2-stelligen Jahres-Aufbereitung handelt, siehst Du nur Werte zwischen dem 01.01.1940 und dem 31.12.2039.

Wenn Du dagegen ein Datums-Format mit einem 4-stelligen Jahr (ISO, EUR, USA, JIS) verwendest, siehst Du auch alle anderen Werte.

Wenn Du mit interaktivem SQL arbeitest (STRSQL) kannst Du das Datums-Format wie folgt verändern:
1. F13=Service
2. Auswahl 1=Sitzungs-Attribute ändern
3. Option Datums-Format (DATFMT) ändern
4. die Select-Anweisung wiederholen.

Wenn Du mit dem iSeries Navigator arbeitest, kannst Du das Datums-Format wie folgt ändern:
Verbindung --> JDBC-Setup --> Format --> Datum

Birgitta

pwrdwnsys
25-08-05, 18:17
Danke, das funktioniert schon mal super. Aber was ist mit einem direkten JDBC-Zugriff ? Ich finde da keine derartige Einstellung im Treiber, um zum Beispiel aus JAVA heraus ein korrektes Datum zu erhalten. Bisher kriege ich bei einem solchen Datum im Result-Set immer NULL zurück.

pwrdwnsys
25-08-05, 18:25
Habs schon gefunden. Im Treiber "date format=iso" mitgeben. Dann werden auch korrekte Werte zurückgeliefert.