-
Im CL den Montag einer KW ermitteln
Hallo zusammen,
ich versuche im CL vergeblich das Datum für den Montag einer Kalenderwoche zu ermitteln.
Beispiel: KW= 4 , JJ=12
Ermitteltes Datum: 23.01.2012
Wie das Datum aufbereitet ist, ist natürlich zweitrangig.
Hat das schon einer gemacht und kann mir weiterhelfen?
Eine Lösung in RPG würde mir allerdings auch weiterhelfen.
Danke für eure Hilfe.
-
Hier ein Link zu einer Vorlage für ein Service Programm:
How to Determine the Week of the Year for a Given Date
Gruß,
Robert
-
Montag ermitteln
Hallo,
in RPGSQL habe ich eine Teillösung
NRTAG Montag = 1, Dienstag 2; ... Sonntag 7
/free
exec SQL
set : NRTAG = DayOfWeek_ISO(: Date);
/end-free
Damit hast du den Tag eines Datums und brauchst nur über die datumsfunktion rechnen + oder minus x Tage
Beispiel:
eval date2 = date + %days(1)
Ich hoffe das hilft
Klaus
-
Hier ein Link zur Verwendung der Datums-APIs in CLLE:
Sample LE/date functions from CLPLE
Vorgehensweise für Dein Problem:
- Wochentag des 1. Januar für das gesuchte Jahr ermitteln
- Datum des ersten Montags im Jahr ermitteln
- 7er-Einmaleins
-
 Zitat von Spateneder
Hier ein Link zur Verwendung der Datums-APIs in CLLE:
Sample LE/date functions from CLPLE
Vorgehensweise für Dein Problem:
- Wochentag des 1. Januar für das gesuchte Jahr ermitteln
- Datum des ersten Montags im Jahr ermitteln
- 7er-Einmaleins
Man sollte dabei allerdings berücksichtigen, dass der erste Montag im Jahr nicht zwangläufig in der KW 1 liegen muss!
Die ISO Regeln lauten:
Die Woche beginnt mit einem Montag und die Mehrheit der Tage in der 1. Kalenderwoche muss aus dem neuen Jahr sein.
Was man sicher sagen kann ist, dass der erste Donnerstag im Jahr oder der 4. Januar immer in KW1 ist.
Ich hab das Ganze mal als SQL Funktion gemacht. Das könnte man in embedded SQL hinterlegen und dann aus CL aufrufen:
Code:
Create Function MySchema/Tag1KW
(ParYear Decimal(4, 0),
ParWeekIso Decimal(2, 0))
Returns Date
Language SQL
Begin
Declare Jan4 Date;
Set Jan4 = Date(Digits(ParYear) concat '-01-04');
If ParWeekISO <= 0
or ParWeekISO > Week_ISO(Jan4 + 1 Year - 7 Days)
Then Return Date('0001-01-01');
End If;
Return Jan4 + (((ParWeekIso - 1) * 7 + 1) - DayOfWeek_ISO(Jan4)) Days;
End;
Birgitta
-
 Zitat von B.Hauser
Man sollte dabei allerdings berücksichtigen, dass der erste Montag im Jahr nicht zwangläufig in der KW 1 liegen muss!
Die ISO Regeln lauten:
Die Woche beginnt mit einem Montag und die Mehrheit der Tage in der 1. Kalenderwoche muss aus dem neuen Jahr sein.
Was man sicher sagen kann ist, dass der erste Donnerstag im Jahr oder der 4. Januar immer in KW1 ist.
Ich hab das Ganze mal als SQL Funktion gemacht. Das könnte man in embedded SQL hinterlegen und dann aus CL aufrufen:
Code:
Create Function MySchema/Tag1KW
(ParYear Decimal(4, 0),
ParWeekIso Decimal(2, 0))
Returns Date)
Language SQL
Begin
Declare Jan4 Date;
Set Jan4 = Date(Digits(ParYear) concat '-01-04');
If ParWeekISO <= 0
or ParWeekISO > Week_ISO(Jan4 + 1 Year - 7 Days)
Then Return Date('0001-01-01');
End If;
Return Jan4 + (((ParWeekISO - 1) * 7 + 1 - DayOfWeek_ISO(Jan4)) Days;
End;
Birgitta
Auf der Suche nach einer SQL-Lösung zum gleichen Problem bin ich auf Deine Funktion gestoßen. Funktioniert prima (eine Klammer auf ist zu viel, aber kein Problem).
Vielen Dank, Birgitta!
-
Hallo auch,
würde diese Funktion gern mal aus probieren, aber Klammertechnisch passt da was nicht. Kann da mir jemand weiter helfen ?
Danke
Ronald
-
Die Klammer nach "Returns Date)" gehört auf dem ersten Blick auf jeden Fall weg.
lg Andreas
-
Und die erste Klammer gehört auch weg 
"Return Jan4 + ("
-
Ich habe den Source Code gerade nochmal ausprobiert und das Beispiel oben durch den geänderten Source Code ersetzt.
Birgitta
-
Danke,
habe es es jetzt ausprobiert. Geht prima
Similar Threads
-
By harkne in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 24-09-10, 09:07
-
By schatte in forum NEWSboard Programmierung
Antworten: 19
Letzter Beitrag: 10-01-07, 11:32
-
By bo1 in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 23-06-06, 15:00
-
By asb_salem in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 21-03-06, 13:32
-
By kschmidt in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 19-06-01, 17:35
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks