[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2006
    Beiträge
    129

    jahr und wocher per sql

    Hallo zusammen,

    ich habe im November 2006 ein Programm erstellt wo ich das Jahr und die Woche zusammen schneide mit diesem Statement:
    set :jjjjww = dec(year(current date) concat week(current date)
    , 6, 0)

    aber jetzt da die Woche nur eine stelle hat bekomme ich den wert 020072 und nicht 200702 wie kann ich das ändern?

    habe schon die verschiedensten varianten ausprobiert.

    danke im vorraus
    Steven_r
    habe es gefunden hier die lösung:
    set :jjjjww = year(current date) *10 concat week(current date)
    trozdem Danke
    Last edited by steven_r; 09-01-07 at 08:01. Grund: hat sich erledigt

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Allerdings ist deine Routine falsch !
    Korrekt wäre die Verwendung von WEEK_ISO, dabei ist dann zu berücksichtigen, dass die 1. Woche ggf. zum Vorjahr und die letzte Woche ggf. zum Folgejahr gehört.
    Suche hier mal nach WEEK_ISO, birgitta hat da eine Routine zur Verfügung gestellt.

    Week liefert den 1.1. immer als Woche 1.

    Zusätzlich funktioniert dein SQL nur bis Woche 9 !
    Korrekt: char(year(current date)*100+week(current date))
    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
    May 2006
    Beiträge
    129
    Danke für die rasche Antwort.

    werde das mit Week_iso einbauen.

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    Hallo,

    in der iNN - eNews 7/2006 (www.iNN-Online.de) war die Prozedur, die Du benötigst.

    Hier nochmals:
    PHP-Code:
    H NoMain
     
    *-------------------------------------------------------------------------
    D/Copy QPROLESRC/DateFkt
    D YearWeekIso     PR             6S 0    
    D   ParmDate                      D      
     
    **************************************************************************
    PProcedure name:  YearWeekIso                                   
    P
    Purpose:         Ermitteln Jahr Kalenderwoche aus Datum      
    P
    Returns:         YYYYKW  (6S 0)                                
    PParameter:       ParmDate   => Datum                           
     
    **************************************************************************
    P YearWeekIso     B                   Export                      
    D YearWeekIso     PI             6S 0                             
    D   ParmDate                      D                               
                                                                      
    D DsYearWeek      DS                                              
    D   YearWeek                     6S 0                             
    D   DsYear                       4S 0 Overlay
    (YearWeek)           
    D   DsWeek                       2S 0 Overlay(YearWeek: *Next)    
     *-------------------------------------------------------------------------
    C/EXEC SQL   Set Option DatFmt = *ISOTimFmt = *ISO              
    C
    /END-EXEC                                                        
                                                                      
    C
    /EXEC SQL   Set :DSWeek Week_ISO(:ParmDate)                    
    C/END-EXEC 
                                                           
    C
    /EXEC SQL                                                         
    C
    Set :DSYear = Case When Month(:ParmDate) = 12 and :DsWeek  =  
    C
    +                    Then Year(:ParmDate)  +  1                     
    C
    +                    When Month(:ParmDate) =  and :DSWeek >= 52 
    C
    +                    Then Year(:ParmDate)  -  1                     
    C
    +                    Else Year(:ParmDate)                         
    C+               End                                               
    C
    /END-EXEC                                                         
    C                   
    Return    YearWeek                              
    P YearWeekIso     E 
    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

  5. #5
    Registriert seit
    Jul 2002
    Beiträge
    331
    Ich versuche das ganze gerade zu implementieren in meinen eigenen Datums-Service.

    Problem ist, wenn ich das ganze umwandeln will mit

    Code:
    CRTSQLRPGI OBJ(DEVJO/SRV_DATUM)     
           COMMIT(*NONE)                
           OBJTYPE(*MODULE)             
           REPLACE(*YES)                
           DATFMT(*ISO)                 
    CRTSRVPGM SRVPGM(DEVJO/SRV_DATUM)   
           BNDSRVPGM(SRV_TUSCHP)        
           ACTGRP(NORECLAIM)
    Bekomme ich die Fehlermeldung SQL8008, welcher auf einen Internen Fehler hinweist CPF5D23.
    Bei IBM auf der Seite heisst es:

    SQL8008
    SQL8008NFür das Produkt text ist kein gültiger Lizenzschlüssel installiert, und die Auswertungsperiode ist abgelaufen. Produktspezifische Funktionen sind nicht mehr aktiv.
    Erläuterung:
    Es wurde kein gültiger Lizenzschlüssel gefunden, und die Auswertungsperiode ist abgelaufen.

    Benutzeraktion:
    Installieren Sie einen Lizenzschlüssel für die Vollversion des Produkts. Ein Lizenzschlüssel für das Produkt ist bei Ihrem IBM Ansprechpartner oder bei einem Vertragshändler erhältlich.
    Was ich net wirklich nachvollziehen kann, denn SQL kann ich prinzipiel nutzen (hab mehrere SQLRPGLE Services).
    Hat irgendjemand eine Ahnung?

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Kannst du überhaupt ein SQL-Programm neu erstellen ?

    Wenn ein fertiges Programm SQL enthält, benötigst du natürlich keinen SQL-Precompiler.
    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
    Jul 2002
    Beiträge
    331
    Also wenn ich die Prozedur (Week) als einzelnen Service erstelle funktioniert es lustiger weise nur wenn ich die Procedure (Week) in mein SRV_Datum mit reinnehmen will, knallts....ohne die Procedur (Week) kann ich den SRV_Datum umwandeln ohne Probleme.....
    Lange Rede kurzer Sinn: Einzelnd funktionierts, zusammen nicht .

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Mach mal in deine H-Bestimmung auch einen DATFMT(*ISO), vielleicht liegts ja daran.

    Andererseits benötigst du den 2. SQL ja nicht, wenn du das einfach mit Unterdefinition des ParmDate und RPG-Befehlen umsetzt.
    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

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    Nur mal so aus Neugier unter welchem Release arbeitest Du?
    Die Funktion WEEK_ISO wurde mit Release V5R1 eingeführt, konnte aber erst mit V5R2 oder V5R3 im embedded SQL eingebunden werden.

    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

  10. #10
    Registriert seit
    Jul 2002
    Beiträge
    331
    Hab V6R1.....

    und werde gerade ein wenig wahnsinnig hier

    Hab mich jetzt entschieden ein BNDDIR anzulegen und alle Einzelteile da rein zu hauen, da scheint zu funktionieren......

    Wollte zwar ursprünglich nur einen Service haben, aber so geht´s auch und erfüllt den selben Zweck

    Aber das Problem ist mir ein Rätsel!

  11. #11
    Registriert seit
    Jul 2002
    Beiträge
    331
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Mach mal in deine H-Bestimmung auch einen DATFMT(*ISO), vielleicht liegts ja daran.

    Andererseits benötigst du den 2. SQL ja nicht, wenn du das einfach mit Unterdefinition des ParmDate und RPG-Befehlen umsetzt.
    Hab ich auch schon versucht........gab dasselbe Ergebniss!

Similar Threads

  1. per SQL Feld ändern...
    By svente in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 23-01-07, 09:49
  2. update per sql
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-09-06, 08:22
  3. Kopieren per SQL
    By steven_r in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 18-07-06, 09:36
  4. Teildateien per SQL auflisten
    By Nennewitz in forum NEWSboard Programmierung
    Antworten: 16
    Letzter Beitrag: 28-06-06, 13:49
  5. Sortierung per SQL
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-05-06, 12:40

Berechtigungen

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