trunc(sysdate) - nette Spiele mit dem Datum

Über die trunc-date Funktion läßt sich ausgehend von einem Datumswert sehr einfach ein abgeleiteter Datumswert ermittelt: bspw. der Jahres-, Quartals-, Monats- oder Wochenanfang.

Die 11g Doku erläutert dies an zwei Stellen:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions209.htm#SQLRF06151
bzw.
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions242.htm#sthref2718

So liefert
select trunc(to_date('06.02.2011'),'q') from dual;

das DATUM des Quartalsersten (im Bsp. den 01.01.2011).
Wichtig ist, dass trunc immer ein Datum zurückliefert, keinen String.

Einige Beispiele anhand des 20.Feb 2011 (ein Sonntag in der 07 KW in 2011):
select trunc(to_date('20.02.2011'),'d') from dual;
select trunc(to_date('20.02.2011'),'dd') from dual;
select trunc(to_date('20.02.2011'),'ddd') from dual;

select trunc(to_date('20.02.2011'),'mm') from dual;
select trunc(to_date('20.02.2011'),'q') from dual;
select trunc(to_date('20.02.2011'),'y') from dual;

select trunc(to_date('20.02.2011'),'iy') from dual;



TRUNC(TO_DATE('20.02.2011'),'D')
--------------------------------
14.02.11
-> liefert das Datum des ersten Tags der Woche (in D, das Datum des Montags)

TRUNC(TO_DATE('20.02.2011'),'DD')
---------------------------------
20.02.11
-> liefert das Datum ohne Uhrzeitangabe

TRUNC(TO_DATE('20.02.2011'),'DDD')
----------------------------------
20.02.11
-> liefert das Datum ohne Uhrzeitangabe

TRUNC(TO_DATE('20.02.2011'),'MM')
---------------------------------
01.02.11
-> liefert das Datum des Monatsersten

TRUNC(TO_DATE('20.02.2011'),'Q')
--------------------------------
01.01.11
-> liefert das Datum des Quartalsersten

TRUNC(TO_DATE('20.02.2011'),'Y')
--------------------------------
01.01.11
-> liefert das Datum des ersten Tags des Jahres

TRUNC(TO_DATE('20.02.2011'),'IY')
---------------------------------
03.01.11
-> liefert das Datum des ersten Tags des ISO-Jahres (= Montag der 1.KW)

Anmerkung:
Die Angabe TO_DATE('20.02.2011') verwende ich hier nur aus Abkürzungsgründen. Sauber und in Anwendungen ausschließlich zu verwenden ist TO_DATE('20.02.2011','dd.mm.yyyy')!

Kommentare

Beliebte Posts aus diesem Blog

Zufallszahlen und -text generieren - DBMS_RANDOM

Laufzeiten umrechnen, Sekundenangaben lesbar darstellen