-
SQL Umsetzung DATE in 6 bzw. 8 stelliges Datum
Hallo,
ich habe ein Problem mit Datumsfeldern, die mit SQL von einer iSeries-Datenbank aufgerufen werden.
Die Datenbankfelder sind als L-Felder mit DATFMT(*EUR) definiert.
In unseren Java-Sourcen rufen wir per SQL die Datensätze aus der iSeries ab und die Datumsfelder werden immer mit TT.MM.JJ, also mit einem 2-stelligen und nicht 4-stelligen Jahr zurückgegeben.
Wie schaffen wir es im SQL, dass das Datum 8-stellig bzw. mit 4-stelligem Jahr zurückkommt?
Lg
-
Wenn du mit Java (bzw. SQL) darauf zugreifst, liegt es an dir selber, wie du das Feld für die Ausgabe formatierst.
Das Feld ist vom Typ Date und enthält immer das vollständige Datum.
Schau mal, was Java so an Formatierungsoptionen bereithält.
Das DATFMT(*EUR) interressiert SQL nämlich nicht, sondern dient nur als Kommentar.
Einzig bei einer Referenz aus einer DSPF/PRTF wird das Format übernommen, was aber auch mit einem eigenen Format wieder überschrieben werden kann.
-
das lässt sich über Treiber Properties einstellen, ohne Angabe zieht da der SYSVAl, der meist auf DMY oder irgend sonem Tünnef steht.
D*B
 Zitat von beegee
Hallo,
ich habe ein Problem mit Datumsfeldern, die mit SQL von einer iSeries-Datenbank aufgerufen werden.
Die Datenbankfelder sind als L-Felder mit DATFMT(*EUR) definiert.
In unseren Java-Sourcen rufen wir per SQL die Datensätze aus der iSeries ab und die Datumsfelder werden immer mit TT.MM.JJ, also mit einem 2-stelligen und nicht 4-stelligen Jahr zurückgegeben.
Wie schaffen wir es im SQL, dass das Datum 8-stellig bzw. mit 4-stelligem Jahr zurückkommt?
Lg
-
Aber Dieter, diese Antwort hätte ich nun nicht von dir erwartet.
Auch die AS/400 liefert in SQL den Feldtyp Date an die Anwendung (in Java halt als Date).
Ich kann den Inhalt des Resultsets doch dem Typ java.util.Date zuweisen und dann per getYear, getMonth und getDay eigene Formatierungen durchführen oder eben direkt als Feld verwenden.
Das funktioniert auch mit den SQL-Typen Time und Timestamp.
Mit Treibereinstellungen hat das doch nichts zu tun.
-
IBM System i - IBM Toolbox for Java: JDBC FAQ
 Zitat von Fuerchau
Aber Dieter, diese Antwort hätte ich nun nicht von dir erwartet.
Auch die AS/400 liefert in SQL den Feldtyp Date an die Anwendung (in Java halt als Date).
Ich kann den Inhalt des Resultsets doch dem Typ java.util.Date zuweisen und dann per getYear, getMonth und getDay eigene Formatierungen durchführen oder eben direkt als Feld verwenden.
Das funktioniert auch mit den SQL-Typen Time und Timestamp.
Mit Treibereinstellungen hat das doch nichts zu tun.
-
Das betrifft aber nur Date's, die als String verarbeitet werden "select char(date) ..." oder "... where mydate = 'tt.mm.jj' ...".
Sobald ich Felder oder Parametermarker vom Typ Date verwende oder als Konstante das ISO-Format benutze (... where mydate = 'JJJJ-MM-TT' ...) gilt das nicht mehr.
-
... wandeln kann man das vorwärts und rückwärts, ich bin mir nur nicht so ganz sicher, was dabei mit den Gültigkeitsbereichen passiert... ich würde das schon eher auf iso umstellen, dann passt in jedem Fall alles.
D*B
 Zitat von Fuerchau
Das betrifft aber nur Date's, die als String verarbeitet werden "select char(date) ..." oder "... where mydate = 'tt.mm.jj' ...".
Sobald ich Felder oder Parametermarker vom Typ Date verwende oder als Konstante das ISO-Format benutze (... where mydate = 'JJJJ-MM-TT' ...) gilt das nicht mehr.
-
Ich habe das mit deinem TransferData ausprobiert.
Auf Grund des Typs "Date" gabs keine Übertragungs- oder darstellungsprobleme.
-
... da wird schnöderweise getObject verwendet und die Reference an das PreparedStatement weitergereicht, dann muss das mit getDate genauso funzen.
D*B
 Zitat von Fuerchau
Ich habe das mit deinem TransferData ausprobiert.
Auf Grund des Typs "Date" gabs keine Übertragungs- oder darstellungsprobleme.
-
Guten Morgen,
tja, ich will ja keinen Streit auslösen , aber der Eintrag beim Treiber war richtig. Wir haben einzig den Parameter
"date format=eur" in den options hinzugefügt .... und das wars.
Danke.
-
Ganz klar ist mir der Grund des Postings aber nicht. Wenn das Feld vom Type Date in der Datei ist, kann ich mir das Feld in Java vom ResultSet mit getDate("Feldname") und bekomme ein Object Date zurück, welches ich beliebig formatieren kann.
So wie sich das liest, holst du das Datum aber mit resultSet.getString("datumsfeld")?
/Robert
Similar Threads
-
By steven_r in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 04-12-06, 12:16
-
By I0N in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 21-11-06, 12:44
-
By steven_r in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 20-11-06, 18:37
-
By GraueEminenz in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 10-07-06, 11:58
-
By N.Welp in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 03-11-05, 14:50
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks