[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2009
    Beiträge
    69

    Sekunden auf Datum 01.01.1980 addieren

    Hallo i5 Fans

    ich suche einen Weg um eine Anzahl Sekunden auf ein Datum zu addieren.
    In RPG natürlich, sorry!

    Gegeben Anzahl Sekunden z.B. 831456732

    Gegeben Datum/Timestamp
    01.01.1980 00:00 Uhr

    Gesucht Datum/Timestamp + Anzahl Sekunden für neues Datum mit Timestamp

    Komme nicht so recht weiter. Weis nicht wie ich ansetzen soll?
    Gibt es evtl. auch SQL Funktion?

    Gruß
    co_steffl

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    %date und %seconds heißen deine Freunde

    D*B

    Zitat Zitat von co_steffl Beitrag anzeigen
    Hallo i5 Fans

    ich suche einen Weg um eine Anzahl Sekunden auf ein Datum zu addieren.
    In RPG natürlich, sorry!

    Gegeben Anzahl Sekunden z.B. 831456732

    Gegeben Datum/Timestamp
    01.01.1980 00:00 Uhr

    Gesucht Datum/Timestamp + Anzahl Sekunden für neues Datum mit Timestamp

    Komme nicht so recht weiter. Weis nicht wie ich ansetzen soll?
    Gibt es evtl. auch SQL Funktion?

    Gruß
    co_steffl
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    zunächst einmal eine Anmerkung:
    Sekunden können immer nur auf eine Timestamp oder eine Zeit, nicht jedoch direkt auf ein Datum addiert werden.

    Konvertierung eines Datums in eine Zeitmarke erfolgt mit der RPG Funktion %Timestamp(). Konvertierung einer Zeitmarke in ein Datum erfolgt mit der RPG-Funktion %Date. Um Sekunden auf eine Zeitmarke addieren zukönnen muss der numerische Wert in einen "rechenbaren" Zeitwert mit Hilfe der Funktion %Seconds() konvertiert werden.

    PHP-Code:
     /Free
        NewDate 
    Date(%TimeStamp(MyDate) + %Seconds(NumWert));
     /
    End-Free 
    In SQL ist das etwas anders, hier muss keine Funktion zur Konvertierung von Zeitwerten verwendet werden, stattdessen wird die Zeiteinheit (z.B. SECONDS) auf neuhochdeutsch hinter den numerischen Wert gestellt. Aber auch bei SQL gilt: Sekunden können nur zu Zeitmarken oder Zeiten addiert werden:

    PHP-Code:
     /Free
        Exec SQL   Set 
    :NewDate Date(Timestamp_ISO(:MyDate)
                                        + :
    NumWert Seconds);
     /
    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
    Feb 2001
    Beiträge
    20.241
    Kleine Anmerkung:

    Ich frage mich, ob der 1.1.1980 so richtig ist. Windwos/Unix/C-Funktions-Zeitmarken verwenden den 1.1.1970 als Basis.
    Ausserdem ist der Sekundenwert auf UTC gerechnet sodass ggf. noch die Zeitzone dazukommt.
    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
    Apr 2009
    Beiträge
    69
    Hallo zusammen,

    danke f.d. Tipps. Es funktioniert mit %Date + %Seconds.

    Danke und Gruß
    Co_steffl

  6. #6
    Registriert seit
    Jan 2008
    Beiträge
    35
    Hallo zusammen,
    ich habe folgendes Problem
    ich muss in RPG in ein Feld JRNTMSTMP I 19,0
    einen Timestamp im UTC Format schreiben.
    Das soll dann so ausschauen
    JRNTMSTMP . . . . . . . . : 1453446003


    Ich habe es so probiert --> funkte nicht -->
    JRNTMSTMP = %dec(%TimeStamp() + %Seconds(5))
    JRN_JRNTMSTMP = %dec(%TimeStamp(sysDatumIso) + %Seconds(5));


    Bitte um Hilfe
    Vielen Dank Hannes

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    In etwa so:
    %dec(%char(%date():*iso0):8:0) * 1000000 + %dec(%char(%time():*iso0):6:0)

    Die Alternative ist die Definition eines Timestamps im ISO-Format in einer DS und eine Redefinition der einzelnen Teile mit Jahr, Monat, Tag, Stunde, Minute, Sekunde und Nanosekunden.
    Anschließend den Wert aus den Einzelfeldern berechnen.
    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
    Jan 2007
    Beiträge
    905
    Versteh ich nicht, funktioniert doch.

    PHP-Code:
        dcl-s  myTmestmp           timestamp;        
        
    dcl-s  mydecstmp            packed(20:0);     
                                                      
             
    myTmeStmp = %timestamp();                
             
    myTmeStmp += %seconds(5);                
             
    mydecStmp = %dec(myTmeStmp);   

    oder so (kurz):
             
    mydecStmp = %dec(%timestamp() + %seconds(5)); 
    Anm. V7R1 und Ergänzung num. Feld (muss 20 Stellen sein!)
    kf

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Wohl dem der V7 hat;-). Es gibt da noch so ein paar ältere Release wo das noch nicht geht. Da stören dann noch die Trennzeichen. Deshalb gibts ja auch das Format %char(%date():*ISO0) und das wegzubekommen.
    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
    Jan 2008
    Beiträge
    35
    Super Vielen Dank, die 20 Stellen waren schuld, aber ein Problem habe ich noch:
    Ich muss das in ein UTC Format bringen, der Wert sollte dann etwa so aussehen
    1456768378

    JRNTMSTMP I 19,0 173 180

    Vielen Dank
    Hannes

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Hierfür musst du ein wenig selber rechnen.
    Per RTVSYSVAL kannst du QUTCOFFSET abfragen und subtrahierst die Stunden/Minuten von deinem Timestamp.
    Du musst natürlich auch sicherstellen, dass der Systemwert rechtzeitig (geht auch automatisch) an die Sommer-/Winterzeit angepasst wird.
    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

  12. #12
    Registriert seit
    Jul 2008
    Beiträge
    84
    Vielen Dank für Eure Antworten!!!

Similar Threads

  1. Antworten: 11
    Letzter Beitrag: 18-07-16, 09:49
  2. Nachricht CPDB053 beim Zugriff auf Windows Freigabe
    By schatte in forum NEWSboard Windows
    Antworten: 7
    Letzter Beitrag: 21-11-06, 11:37
  3. QNTC Zugriff auf CD Laufwerk Fehlerhaft
    By pwrdwnsys in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 07-11-06, 15:34
  4. Datei von S/36 auf AS/400 holen
    By WeKaSys in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 06-11-06, 17:34
  5. A5 mit Host Print Transform auf HP
    By dirkus in forum NEWSboard Drucker
    Antworten: 4
    Letzter Beitrag: 26-10-06, 17:52

Berechtigungen

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