[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Feb 2002
    Beiträge
    61

    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

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    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 Zitat von beegee Beitrag anzeigen
    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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    IBM System i - IBM Toolbox for Java: JDBC FAQ


    Zitat Zitat von Fuerchau Beitrag anzeigen
    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.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... 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 Zitat von Fuerchau Beitrag anzeigen
    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.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ich habe das mit deinem TransferData ausprobiert.
    Auf Grund des Typs "Date" gabs keine Übertragungs- oder darstellungsprobleme.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... da wird schnöderweise getObject verwendet und die Reference an das PreparedStatement weitergereicht, dann muss das mit getDate genauso funzen.

    D*B

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Ich habe das mit deinem TransferData ausprobiert.
    Auf Grund des Typs "Date" gabs keine Übertragungs- oder darstellungsprobleme.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Feb 2002
    Beiträge
    61
    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.

  11. #11
    Registriert seit
    Oct 2004
    Beiträge
    251
    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

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Da frage ich mich auch, wie du das Feld per SQL liest.
    Wie gesagt, wenn ich ein Feld vom Typ Date lese, ist die Treibereinstellung unwichtig.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. SQL Datum
    By steven_r in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 04-12-06, 12:16
  2. SQL: Aus mehreren Feldern ein Datum erkennen
    By I0N in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 21-11-06, 12:44
  3. SQL DATUM
    By steven_r in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 20-11-06, 18:37
  4. Fehler im SQL bzw. Joblog
    By GraueEminenz in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 10-07-06, 11:58
  5. SQL Date im Datumsformat *EUR erstellen
    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
  •