[NEWSboard IBMi Forum]

Thema: Day_of_week

  1. #1
    Registriert seit
    Nov 2004
    Beiträge
    325

    Day_of_week

    Moin Leute,

    als mehr oder weniger "stiller" Mitleser muss ich auch mal eine Frage stellen:

    Diese Funktion:

    C/EXEC SQL
    c+ set :tag = DAYOFWEEK_ISO(:aktdat)
    C/END-EXEC

    sollte mir doch eigentlich den Wochentag zurückgeben. Also für den 16.08.2006 den Wert 3 (Mittwoch), ich bekomme aber den Wert 7 zurück.

    Die Funktion

    C/EXEC SQL
    c+ Set :KW = Week_Iso((Substr(Digits(atum), 5, 4) concat '-' concat
    c+ Substr(Digits(atum), 3, 2) concat '-' concat
    c+ Substr(Digits(atum), 1, 2)))
    C/END-EXEC

    liefert mir den korrekten Wert für die KW (33). Was mache ich denn bei Dayofweek falsch???

    vielen Dank für Eure Mithilfe.

  2. #2
    Registriert seit
    Jan 2006
    Beiträge
    111
    Hi,

    da stellt sich mir die Frage, in welchem Format liegt das Datum in der variablen "aktdat" vor ?

    Ist es ein Datumsfeld oder ein Dec(6,0) ?

    Gruß
    Maxx

  3. #3
    Registriert seit
    Nov 2004
    Beiträge
    325
    Zitat Zitat von Bratmaxxe
    Hi,

    da stellt sich mir die Frage, in welchem Format liegt das Datum in der variablen "aktdat" vor ?

    Gruß
    Maxx
    C/EXEC SQL
    c+ Set Option DatFmt = *ISO
    C/END-EXEC

    H-Bestimmungen sind u.a.
    Hdatfmt(*dmy) datedit(*dmy.) option(*nodebugio)

  4. #4
    Registriert seit
    Jan 2006
    Beiträge
    111
    so gut kenne ich mich nun nicht mit sql aus aber ich würde es so in szene setzen:

    Code:
    d aktdat s d
    d MyDay s 3 0
     
    C        time                 aktdat
     
    /exec sql set :MyDay = DAYOFWEEK(:aktdat)
    /end-exec
    Gruß
    Maxx

  5. #5
    Registriert seit
    Nov 2004
    Beiträge
    325
    Zitat Zitat von Bratmaxxe
    so gut kenne ich mich nun nicht mit sql aus aber ich würde es so in szene setzen:

    Code:
    d aktdat s d
    d MyDay s 3 0
     
    C        time                 aktdat
     
    /exec sql set :MyDay = DAYOFWEEK(:aktdat)
    /end-exec
    Gruß
    Maxx
    gibt mir aber trotzdem 7 zurück????

  6. #6
    Registriert seit
    Jan 2006
    Beiträge
    111
    dann ist euer Systemdatum auf der AS400 falsch eingestellt !

    nachfolgender Code stimmt definitiv:

    Code:
     
     H DECEDIT('0,') DATEDIT(*DMY.)                            
     D   aktdat        S               D                       
     d MyDay           S              3S 0                     
      *                                                        
     C                   time                    aktdat        
      *                                                        
     C/exec sql set :MyDay = DAYOFWEEK(:aktdat)                
     C/end-exec                                                
      *                                                        
      *                                                        
     C                   EVAL      *INLR = *ON                 
     ******************Datenende ******************************
    Inhalt von Myday nach Aufruf ist = 4

    Gruß
    Maxx

  7. #7
    Registriert seit
    Nov 2004
    Beiträge
    325

    Dayofweek

    Der Wert muß´3 sein, aber......

    H-Bestimmungen Hdatfmt(*iso)

    dann klappts auch mit dem Datum....


    Trotzdem vielen herzlichen Dank für Deine Hilfe

  8. #8
    Registriert seit
    Jan 2006
    Beiträge
    111
    Nene, der Wert 4 is schon richtig, denn

    1=Sonntag, 2=Montag, 3 = Dienstag, 4 = Mittwoch .... usw.

    nur bei

    DAYOFWEEK_ISO(:aktdat) bekommst du deine 3 zurück !

    Gruß
    Maxx

  9. #9
    Registriert seit
    Nov 2004
    Beiträge
    325

    dayofweek

    Genauso isses, das ist ja auch gewollt. Vielen Dank nochmals und einen angenehmen Tach.

Berechtigungen

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