[NEWSboard IBMi Forum]

Thema: Datumsproblem

Hybrid View

  1. #1
    Joe is offline [professional_User]
    Registriert seit
    Mar 2001
    Beiträge
    365

    Datumsproblem

    Hallo Forum.

    Ein Datumsfeld Typ Date enthält den Wert 31.12.1899

    Anzeige bei DSPPFM: 1899-12-31
    Anzeige im interakt. SQL: ++++++++++

    Abfrage im intarakt.SQL ist möglich:
    ..select where Datum = '31.12.1899'


    Im SQLRPGLE bringt
    Select * into S from Datei...

    einen Datenumsetzungsfehler der sich auf das Datumsfeld bezieht.


    Ich habe mal mit verschieden Werten probiert und stelle fest,
    das ein Datum ab 01.01.1940 akzeptiert wird.

    In der DB2 UDB Reference wird bei Date unter Limits
    eine Range von 01.01.0001 31.12.9999 angegeben.

    Gibt es da irgendwo Einstellmöglichkeiten?

    BS = V5R3M0

    Gruß Joe

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Das Datum wird bei der Anzeige im 6-stelligen Format verwendet, was natürlich zu Fehlern führt, da 6-stellige Datümer nur vom 1.1.1940 - 31.12.2039 gehen.
    Im SQLRPG/LE muss ich das ISO-Format (10-Stellig JJJJ-MM-TT) verwenden, um auch andere Datümer zu verwenden.
    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
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Joe
    Hallo Forum.

    Ein Datumsfeld Typ Date enthält den Wert 31.12.1899

    Anzeige bei DSPPFM: 1899-12-31
    Anzeige im interakt. SQL: ++++++++++

    Abfrage im intarakt.SQL ist möglich:
    ..select where Datum = '31.12.1899'


    Im SQLRPGLE bringt
    Select * into S from Datei...

    einen Datenumsetzungsfehler der sich auf das Datumsfeld bezieht.


    Ich habe mal mit verschieden Werten probiert und stelle fest,
    das ein Datum ab 01.01.1940 akzeptiert wird.

    In der DB2 UDB Reference wird bei Date unter Limits
    eine Range von 01.01.0001 31.12.9999 angegeben.

    Gibt es da irgendwo Einstellmöglichkeiten?

    BS = V5R3M0

    Gruß Joe
    Das ist eine Restriction von RPG und dem Pre-Compiler!
    Das Datums-Format, das das eingebettete SQL verwendet, ist das Format, das im Compile-Befehl (Option DATFMT) angebeben wird. Der Default-Wert ist *JOB und das Job-Datum hat nur ein 2-stelliges Jahr.

    Du hast 2 Möglichkeiten:
    1. Beim Compile-Befehl das Format auf ein Format mit 4-stelligem Jahr (ISO, EUR, USA, JIS) zu setzen
    2. Ein Set Option-Statement einzubinden, in dem das Datums-Format mit 4-stelligem Jahr angeben wird.
    C/EXEC SQL Set Option DatFmt = *ISO
    C/END-EXEC

    Die Datums-Formate, die in den D-, F, oder H-Bestimmungen hinterlegt sind, werden nicht berücksichtigt.

    Der PreCompiler generiert für jede verwendete Host-Variable eine zusätzliche Variable. Bei Datums-Feldern erhalten diese Variablen das Format, das im Compile-Befehl oder im Set Option Statement hinterlegt ist.

    Dies muss auch berücksichtigt werden, wenn z.B. ein Datums-Feld mit *LOVAL gefüllt wird. Bei einem Datums-Format mit 4-stelligem Jahr ist *LOVAL 0001-01-01 und *HIVAL 9999-12-31, bei einem Datums-Format mit 2-stelligem Jahr ist *LOVAL 1940-01-01 und *HIVAL 2039-12-31.

    Birgitta

    Birgitta
    Birgitta Hauser

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

  4. #4
    Joe is offline [professional_User]
    Registriert seit
    Mar 2001
    Beiträge
    365
    Hallo.

    Danke für die ausführlichen Infos.

    Gruß Joe

Similar Threads

  1. Datumsproblem
    By muadeep in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 27-10-06, 11:35

Berechtigungen

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