[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2001
    Beiträge
    61

    Post Datumsprüfung

    Hallo,
    ich suche eine Möglichkeit zu prüfen ob ein Datum ein Werk- oder Wochenendtag ist!
    Da gibt's doch sicher was.

    Kann mir jemand auf die Sprünge helfen?


    Gruss
    Stefan

  2. #2
    Registriert seit
    Jan 2001
    Beiträge
    304

    Talking

    Hallo Stefan,
    da gibt es einen SYSVAL, der heisst QDAYOFWEEK und den kannst Du mit RTVSYSVAL in jedem CL abfragen.
    Gruss Reinhold
    R.Schreiber

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241

    Post

    Am einfachsten geht es mit SQL:

    /EXEC-SQL
    + SET :WTAG = WEEKDAY( ATUM)
    /END-EXEC

    Die Variable WTAG muss dezimal sein, die Variable DATUM in einem gültigen Datumformat.

    Der Systemwert QDAYOFWEEK bestimmit nur den Wochentag des aktuellen Systemdatums.
    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

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    13

    Post

    Sollte Dir das SQL-Statement nicht ausreichen, dann bleibt Dir auch die Möglichkeit, den Betriebskalender der AS/400 abzufragen, dort mußt Du allerdings zuerst die Feiertage, Brückentage oder ähnliches einpflegen, aber dann kannst Du zu jedem Datum prüfen, ob IHR dort Werktag hattet oder nicht.

    MfG, Marc

  5. #5
    Registriert seit
    Apr 2012
    Beiträge
    360
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Am einfachsten geht es mit SQL:

    /EXEC-SQL
    + SET :WTAG = WEEKDAY( ATUM)
    /END-EXEC

    Die Variable WTAG muss dezimal sein, die Variable DATUM in einem gültigen Datumformat.

    Der Systemwert QDAYOFWEEK bestimmit nur den Wochentag des aktuellen Systemdatums.
    Hallo,

    Wie bekomme ich eigentlich von einem Datum(20121001) am elegantesten Wochentag und Wochennummer raus?

    Danke

    Tarki

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Auch wieder SQL:

    d MyNumDate 8P 0
    d myDate 10
    d SqlWeekday 5I 0
    d SqlWeek 10I 0

    myDate=%editw(MyNumDate,'____.__.__');

    exec sql set : SqlWeekday = weekday(date(: myDate));
    exec sql set : SqlWeek = week_iso(date(: MyDate));

    Es gibt sicherlich wieder mal elegantere Lösungen.

    Beachte bitte bei Wochen 1 und 53, dass hier ggf. das Vor- oder Folgejahr gemeint sein kann.
    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

  7. #7
    Registriert seit
    Apr 2012
    Beiträge
    360
    thaaaaaaaaaaaaaanks.

    lang elegant gut

  8. #8
    Registriert seit
    Apr 2012
    Beiträge
    360
    Abend,

    darf ich Sie noch ein allerletztes mal für heute um Hilfe bitten.

    Code:
    D I               S              8P 0 inz(*ZEROS)       
    d myDate          S             10                      
    d SqlWeekday      S              5I 0                   
    d SqlWeek         S             10I 0                   
    
    myDate=%editw(I:'    .  .  ');                                 
    exec sql  SET :SqlWeekday = WEEKDAY(date(:MyDate));            
    exec sql  SET :SqlWeek = week_iso(date(:MyDate));
    Was habe ich da falsch gemacht?

    ich habe bis dato kein exec sql so abgesetz(Vorher /Free nachher /End-free), gehört das eventuell auf eine bestimmte position?
    Haben V6R1M0

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    YYYY.MM.DD ist keine gültige alphanumerische Darstellung eines Datums!

    Gültige Formate sind: YYYY-MM-DD, DD.MM.YYYY, MM/DD/YYYY

    ... und was die wenigsten wissen: 'YYYYMMDDHHMMSS' wird als gültiges Format angesehen, d.h. das Datum einfach nach alpha konvertieren und 6 Nullen dranhängen und schon funktionierts.

    Das folgende Beispiel funktioniert:
    Code:
     D MyDate          S              8P 0 inz(20121011)                      
                                                                              
     D DSTS            DS                                                     
     D   MyTS                        14A                                      
     D   MyDateA                      8A   Overlay(MyTS)                      
     D   MyTimeA                      6A   Overlay(MyTS: *Next) inz('000000') 
                                                                              
     D MyWeekDay       S              1P 0                                    
     D MyWeekISO       S              3P 0                                    
     *---------------------------------------------------------
     /Free
        MyDateA = %EditC(MyDate: 'X'); 
        Exec SQL  Set (:MyWeekDay, :MyWeekIso) = (DayOfWeek_ISO(:MyTS),   
                                                  Week_ISO(Date(:MyTS))); 
        Dsply MyWeekDay;                                                  
        Dsply MyWeekISO;  
        *INZSR = *On                                                
     /End-Free
    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

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Bei den 6 Nullen, da sagst du was, das mag auch %date() und SQL:

    d myNumdate 8P 0
    d myDate D

    myDate = %date(myNumDate * 1000000);
    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

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Bei den 6 Nullen, da sagst du was, das mag auch %date() und SQL:

    d myNumdate 8P 0
    d myDate D

    myDate = %date(myNumDate * 1000000);
    Natürlich, dabei handelt es sich schließlich um eine Zeitmarke (ohne Trennzeichen), wie sie schon immer mit TIME gefüllt werden konnte.

    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

Similar Threads

  1. Probleme mit Datumsformat in RPG
    By strickistracki in forum IBM i Hauptforum
    Antworten: 16
    Letzter Beitrag: 03-11-05, 15:18

Berechtigungen

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