[NEWSboard IBMi Forum]

Thema: Datumsrechnen

Hybrid View

  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    Datumsrechnen

    Hi

    ich habe hier in einem RPGLE Pgm ein
    Code:
    C           *YMD         move        DT2     RRDT2

    DT2 ist ein Datumsfeld
    Code:
    D DT2             S               D
    lt Debug mit dem Inhalt 2009-03-15

    RRDT2 ist ein Nuerisches Feld in einer DS, 8 stellig ohne NK-Stellen
    nach dem move steht in RRDT2 00090315
    d.h. die 2 fehlt
    Das ist mir nicht klar, wer kann helfen ?

    Danke,
    Robi

  2. #2
    Registriert seit
    May 2007
    Beiträge
    295
    Wenn mich nicht alles täuscht ist bei *YMD das Jahr nur 2stellig.
    Versuch es anstatt dem move mit einem eval und %dec(DATUM)

    d datum s d inz(*sys)
    d xx s 8 0

    c eval xx=%dec(datum)

    lg
    Last edited by prsbrc; 15-09-09 at 09:47. Grund: codebeispiel
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    *YMD im Faktor1 besagt, dass das numerische Zieldatum im Format YYMMDD ausgegeben werden soll. Soll das Zieldatum im Format YYYYMMDD ausgegeben werden, lass entweder den Faktor1 leer oder gibt *ISO an.

    Das gleiche gilt auch für den 2.Parameter, wenn Du die Built-In-Funktion %DEC zum Konvertieren verwendest.

    Die Datumsformate *YMD, *MDY und *DMY haben immer ein 2-stelliges Jahr. Die Datumsformate mit dem 4-stelligen Jahr sind *ISO, *EUR, *USA, *JIS

    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
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Hi,
    klar, deine Lösung geht, danke.
    Trotzdem versteh ich es nicht.
    In dem Pgm wird vorher ein 8-stelliges numerisches Feld mit 20090709 über
    Code:
    *YMD        move          RRDT1           DT1
    übertragen und kommt (im Datumsfeld) auch als 2009-07-09 an.
    Und umgekehrt schneidet er 2 Stellen ab ?
    ganz schön dämlich
    Na ja, es geht ja wieder. Danke
    Gruß
    Robi

    @Birgitta
    Danke für die Erklärung!
    Last edited by Robi; 15-09-09 at 10:04. Grund: Dank auch an Birgitta

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das liegt daran, dass ein Datumfeld das Jahr immer 4-stellig enthält.
    Durch *YMD wird das Jahr auf 2 Stellen gekürzt und nach der alten Regel "Jahr < 40, dann + 2000 sonst + 1900" ergänzt.
    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

Berechtigungen

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