Datumsfragen - das geliebte Vorjahr

Für die Ermittlung des Vorjahres gibt es eine Reihe von Funktionen, die den Umgang mit dem Datum erleichtern können.
Anbei ein Beispiel zur Ermittlung des äquivalenten Tages im Vorjahr (für tagesbezogene Vorjahresvergleiche:


select to_char(AJ.datum,'Dy dd.mm.yyyy') AJ,

to_char( AJ.datum - (AJ.datum - to_date(to_char(AJ.DATUM,'yyyy') - 1||to_char(AJ.DATUM,'mmdd'),'yyyymmdd')) ,'Dy dd.mm.yyyy') VJ1,

to_char( ADD_MONTHS(AJ.datum, -12) ,'Dy dd.mm.yyyy') VJ2,

to_char( AJ.datum - 364 ,'Dy dd.mm.yyyy') VJ_MO_MO,

AJ.datum - to_date(to_char(AJ.DATUM,'yyyy') - 1||to_char(AJ.DATUM,'mmdd'),'yyyymmdd') TAGE_DIFF

from TZ_TAGESZAHLENTEST1 AJ



AJ - steht für Tag im aktuellen Jahr

VJ1 - ermittelt den Tag im Vorjahr (VJ) indem vom Jahr eins abgezogen wird und daraus das VJ-Datum wieder "zusammengebaut" wird. !!!=> dies Scheitert im Schaltjahr !!!

VJ2 - macht das selbe wie VJ1, jedoch mit der Datumsfunktion ADD_MONTHS - Erfolgreich auch im Schaltjahr

VJ_MO_MO - zeigt einen Weg, die selben WOCHENtage von aktuellem und Vorjahr zu vergleichen (Vorjahresbetrachtungen)


Spannend wird der Unterschied bei diesen Funktionen am Monatsende und am 28.Feb/29.Feb/01.März - :-)

Kommentare

Beliebte Posts aus diesem Blog

PGA unter Oracle 11g

trunc(sysdate) - nette Spiele mit dem Datum

Datapump - Verzeichnis erstellen