[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.858
    Damit habe ich eigentlich nie Probleme gehabt, allerdings solltest du das Format sicherhaltshalber immer in ISO angeben:

    DATE(
    LEFT(DIGITS(o500_BELEGDAT1), 4) concat '-'
    CONCAT SUBSTRING(DIGITS(o500_BELEGDAT1), 5, 2) concat '-'
    CONCAT SUBSTRING(DIGITS(o500_BELEGDAT1), 7, 2)
    ) AS datum

    Prüfe noch die ODBC-Konfig auf Datumsumsetzung *ISO, dann müsste es auch mit V4R5 klappen.
    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

  2. #2
    Registriert seit
    Jul 2006
    Beiträge
    7
    @ Fuerchau: Vielen Dank für die schnelle Antwort.

    Leider funktioniert die Sache nicht:

    ISO-Einstellung im ODBC-Treiber (DSN)
    habe ich gecheckt, steht auf ISO mit Trennzeichen '-'.

    DATE(
    LEFT(DIGITS(o500_BELEGDAT1), 4) concat '-'
    CONCAT SUBSTRING(DIGITS(o500_BELEGDAT1), 5, 2) concat '-'
    CONCAT SUBSTRING(DIGITS(o500_BELEGDAT1), 7, 2)
    ) AS datum


    Trotz der '-' sehe ich auf derAS400 das Datum im Format 05/12/31...

    Da scheint irgendeine Einstellung mein
    Wunschformat zu "overrulen" ?!?

    Daher auch der Versuch das ganze als String zu übertragen.

    Vermutlich könnte ich das Datum auch in MS-Query umformatieren, aber nachdem mir das MS-Query schon einige Streiche gespielt hat, möchte ich alle "Wünsche" als VIEW auf der AS400 hinterlegen u. das MS-Query dann nur noch übertragen lassen...

    Was also tun ?

    LG aus dem heute heißen Süden Österreichs!

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.960
    Zitat Zitat von jjagi
    Trotz der '-' sehe ich auf derAS400 das Datum im Format 05/12/31...

    Da scheint irgendeine Einstellung mein
    Wunschformat zu "overrulen" ?!?
    Das Datum ist auf in der DB2 UDB for iSeries immer als 4Byte-Binär-Wert hinterlegt und stellt die rechnerische Anzahl an Tagen seit dem 01.01.0001. (Excel seinerseits rechnet in Sekunden und setzt auf dem 1.1.1900 auf)

    Um den Binär-Wert sichtbar zu machen, kannst Du die skalare Funktion HEX verwenden:

    PHP-Code:
    Select Hex(MyDate), MyDate from MyTable 
    Datums-Formate sind dazu da, um den Binär-Wert lesbar zu machen. Auf der iSeries erkennt SQL selber die folgenden alphanumerische Darstellungen als gültiges Datum:
    JJJJ-MM-TT (= *ISO), TT.MM.JJJJ (=*EUR) und MM/TT/JJJJ (= *USA)

    Wenn Du also in einer Where-Anweisung MyDate = '01.07.2006' angibst, wird diese Darstellung in den entsprechenden Binär-Wert konvertiert.

    In welchem Datums-Format Du das Datum angezeigt bekommst, hängt davon ab, was Du eingestellt hast. Der Default-Wert für das Datum steht i.d.R auf *JOB.
    Wenn Du mit iteraktivem SQL arbeitest, kannst Du das Datums-Format wie folgt ändern:
    F13 --> Auswahl 1. --> DATFMT

    Wenn Du über iSeries Navigator arbeitest, kannst Du das Datums-Format unter JDBC-Setup einstellen.

    Für SQL-Programmierung kann das Datums-Format über ein entsprechenden SET OPTION-Statement eingestellt werden.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 6. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.858
    Prüfe mal deine Windows-Einstellungen, da das Anzeigeformat der Windows-Anwendungen von dort kommt.
    Systemsteuerung->Regions- und Sprachoptionen

    PS:
    Wenn du das Datum in STRSQL ansehen willst, musst du ggf. über F13 das Datumsformat auf *ISO umstellen, default ist hier *JOB.
    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
    Jul 2006
    Beiträge
    7
    vielen Dank für die informativen Antworten - wie ihr vermutlich gemerkt habt, bin ich noch eher in der Anfängerkategorie und lerne hier jeden Tag mehr!

    Ich habe jetzt
    in STRSQL das Datumsformat auf *ISO und sehe jetzt in STRSQL date() als ISO.

    In Win habe ich das Kurzdatumsformat ebenfalls auf ISO sprich JJJJ-MM-TT
    eingestellt (war TT.MM.JJJJ) und sicherheitshalber Neustart.

    MS-Query fällt trotzdem auf die Nase (Fehlermeldung wiederum: Ungültiger Wert für Datum, Zeit o. Zeitmarke)...


  6. #6
    Registriert seit
    Jul 2006
    Beiträge
    7
    hi Forum!

    Ich habe einen Workaround gefunden (das Ganze als CHAR-String). Wenn er auch nicht wirklich das Problem löst, jetzt kommt wenigstens ein ISO Format bei MS-Query heraus:

    CHAR(
    DATE(
    LEFT(DIGITS(o500_BELEGDAT1), 4) concat '-'
    CONCAT SUBSTRING(DIGITS(o500_BELEGDAT1), 5, 2) concat '-'
    CONCAT SUBSTRING(DIGITS(o500_BELEGDAT1), 7, 2)
    )) AS datum


    Allerdings frage ich mich (und Euch), warum das Datum partout nicht regulär in mein Excel bzw. MS-Query will...

    LG vom "Nordbalkan" J.Jagersberger

Similar Threads

  1. EXCEL, PDF, ZIP, IDEA, e-mail, alles auf iSeries
    By Kilianski in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 22-11-06, 15:23
  2. Antworten: 4
    Letzter Beitrag: 12-06-06, 12:29
  3. MS Access Zugriff via ODBC auf iSeries Tabellen
    By Rico in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 21-03-05, 09:43
  4. ODBC Datenquelle weist auf alten Server
    By HerbertH in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 27-05-04, 13:10
  5. Antworten: 2
    Letzter Beitrag: 22-08-02, 07:27

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •