View Full Version : Kalenderwoche ermitteln
Hallo,
Ich weiss das ich mit
C/EXEC SQL Set :MyWeek = Week_ISO(:MyDate)
die Kalenderwoche zurückbekomme.
Ich will eine Datei erstellen, wo Beträge für Kalenderwochen abgebildet werden(Kw1-3, Kw4-6, Kw7-9, etc.) sollen.
Ist es möglich auch durch die Kalenderwoche per Sql auf Wochenbeginn und Wochenende zu ermitteln?
Oder muss ich den 1. Tag der KW ermitteln und anschließend die 21 Tage hochzählen?
Bin für jeden Input dankbar
Danke
Tarki
Aus der Woche gibt es keinen Rückschluss auf ein Datum, da ja nur ein Wert zwischen 1 und 53 zurückgegeben wird und somit das Jahr fehlt.
Du musst schon selber rechnen, allerdings gibt dir DAYOFWEEK_ISO(Datum) den Wochentag zwischen 1 (Montag) und 7 (Sonntag) zurück.
Also ist "Datum - (DAYOFWEEK_ISO(Datum) - 1) days" immer den Montag zurück, von dem lässt sich ja das nächste Datum errechnen.
Ich erstelle in nahezu jeder größeren Applikation eine Kalenderdatei.
Für jeden Tag sind alle Infos abgelegt, die interessant sein könnten (Wochentag, Wochennummer, laufende Nummer des Tages im Jahr, etc.) plus individuelle Anforderungen, z.B. Feiertage oder Tage, an denen Teile des Unternehmens nicht für normale Anforderungen verfügbar sind, z.B. Inventuren.
Meist ist es viel einfacher, diese Datei dazuzujoinen als komplizierte Funktionen aufzurufen. Und womöglich performanter.
Für Deinen Fall bräuchtest Du nur noch einen Index auf Jahr, Woche und Wochentag und kannst mit den Keys "2014 - 18 - Montag" bzw. "2014 - 18 - Sonntag" schnell herausfinden, dass der Montag der Woche 18 im Jahr 2014 das Datum 2014-04-28 hat und mit Sonntag 2014-05-04 endet.
(Statt "Montag" verwende ich in Wirklichkeit natürlich "1" usw.)
Danke an alle.
Ich werde es mit der Kalenderdatei probieren.
lg
Tarki
Hallo,
eine Frage bzg. Week_iso hätte ich da noch bitte:
SELECT DTBU, WEEK_ISO(Date(DTBU)) FROM FILE01
Als Ergebnis bekomme ich:
....+....1....+....2....+.
DTBU WEEK_ISO
2014.06.18 ++++++++++++++
2014.06.18 ++++++++++++++
Wenn DTBU 8, 0 ist wie muss mein Sqlstatement aussehen um den Datenzuordnungsfehler in Teildatei FILE01 zu beheben?
Die Funktion erwarten eine Zeichenfolge oder ein Datumsfeld
Date(CHAR(xx))
Wenn dein DTBU numerisch JJJJMMTT hat, reicht ein char(dtbu * 1000000).