[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    309

    Datum um einen Tag erhöhen

    wie kann man im ILE, am schnellsten ein nummerisches Feld (qDatum), welches ein Datum beinhaltet, um einen Tag erhöhen!


    PHP-Code:
    D qDatum          S              8  0 inz(20070606

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    ungefähr so:

    %dec(%char(%date(%days(%date(%char(qDatum):*cymd0) ) + 1)):8:0)
    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.873
    Hallo,

    Ich würde es so probieren:
    PHP-Code:
    /Free
       NewDate 
    = %Dec(%Date(qDatum: *ISO) + %Days(1): 80);
    /
    End-Free 
    Solltest Du noch nicht auf V5R3 sein, versuch' es so:
    PHP-Code:
    /Free
       NewDate 
    = %Int(%Char(%Date(qDatum: *ISO) + %Days(1): ISO0));
    /
    End-Free 
    Birgitta
    Birgitta Hauser

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

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    309
    Hab noch mal nachgeschaut, wir haben def.:
    Type 9406; Model 550; Rel V5R3M0


    und genau dieses Statement funkt. leider nicht! :-(

    PHP-Code:
    /Free 
       NewDate 
    = %Dec(%Date(qDatum: *ISO) + %Days(1): 80); 
    /
    End-Free 
    der Compiler bringt mir dann immer folgende Fehlermeldungen:
    PHP-Code:
    *RNF0339 20      1 Für %DEC dürfen nur zwei Parameter angegeben werdenwenn der
                       zweite Parameter ein Datenformat ist
    .                        
    *
    RNF0328 30      1 Der zweite Parameter für %DEC oder %DECH ist ungültig

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Deswegen musst du ein "%CHAR( ber. datum :*CYMD0)" einfügen.

    PS:
    Bei der Funktion %date beschreibt der 2. Parameter das Quellformat, in deinem Fall also *CYMD0, das Ergebnis ist immer eine variable vom Typ DATE.

    Bei %char wiederum ist der 2. Parameter das Zielformat.
    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

  6. #6
    Registriert seit
    Mar 2005
    Beiträge
    148
    Zitat Zitat von Fuerchau Beitrag anzeigen
    %dec(%char(%date(%days(%date(%char(qDatum):*cymd0) ) + 1)):8:0)
    supergeil.
    würd ich so eine zeile in nem programm hier finden, ich würd erstmal dumm gucken und danach den debugger bemühen um zu sehen was es tut
    Gruß
    Martin

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Etwas richtiger (siehe Birgitta) ist:

    %dec(%char(%date(qdatum:*iso0) + %days(1):*iso0):8:0)
    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

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Sorry,

    ich hab' gepennt, das Statement muss natürlich so heißen:
    PHP-Code:
    /Free
       NewDate 
    = %Dec(%Date(qDatum: *ISO) + %Days(1): *ISO);
    /
    End-Free 
    @Fuerchau:
    Schau Dir mal die Datums-Formate an:
    Für das heutige Datum liefert CYMD0: 1070606!
    Birgitta Hauser

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

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Stimmt, mit CYMD wird nur 3-stelliges Jahr geliefert, deshalb habe ich michauch verbessert.

    *ISO liefert und erwartet allerdings die Trennzeichen, *ISO0 funktioniert, habe ich gerade ausprobiert.

    PS:
    Seit wann akzeptiert %dec ein DATE-Format ?

    PPS:
    Stimmt, %DEC akzeptiert ein DATE, dann gilt *ISO als Modifikator.
    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

  10. #10
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Oder so (aber ohne Gewähr)!
    PHP-Code:
    D QDATUM          S              8P 0 INZ(20070606)
    D QDATUM1         S               D   DATFMT(*ISO
    D                                                  
    C     
    *ISO          MOVE      QDATUM        QDATUM1
    C                   ADDDUR    1
    :*DAYS       QDATUM1
    C     
    *ISO          MOVE      QDATUM1       QDATUM 

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. Datum in Query
    By heini in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 30-09-06, 10:10
  5. Datum überlebt ODBC Transfer auf Excel nicht
    By jjagi in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 07-07-06, 08:29

Berechtigungen

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