Oracle BUILT-IN Functions LAST_DAY(), INTERVAL und TRUNC()

von Karsten Besserdich

Praxisbeispiele – Oracle BUILT-IN Functions LAST_DAY(), INTERVAL und TRUNC()

Oft werde ich mit immer den gleichen Problemstellungen konfrontiert. Dazu zähle ich insbesonders den Umgang mit Datumswerten.
Viel zu häufig habe ich gesehen, wie ein DATE in ein VARCHAR2 umgewandelt wurde und dann die Monate, Jahre oder Tage manipuliert werden, um dieses dann im Anschluss wieder in ein DATE umzuwandeln.

Das ist nicht nur auf Datenbankseite kostenintensiv, sondern auch sehr fehleranfällig.

Ermittelt den letzten Tag eines Monats

Rechnet ein Jahr auf das aktuelle Datum

Rechnet 7 Monate auf das aktuelle Datum

Ermittelt den ersten Tag des nächsten Monats, ausgehend vom aktuellen Datum

Um die Uhrzeit eines DATEs auf „0 zu stellen“, kann die TRUNC Funktion verwendet werden.

2 KOMMENTARE

avatar placeholder
19
.
07
.
2016
 von  Stefan
Hallo, die angegebenen Lösungen sind leider auch durchaus fehleranfällig: select to_date('29022016' , 'DDMMYYYY') interval '1' year from dual; select to_date('31012016' , 'DDMMYYYY') interval '1' month from dual; liefern jeweils einen Fehler "ORA-01839: date not valid for month specified", weil stur das jeweils angegebene Feld inkrementiert wird, ohne Rücksicht auf das Ergebnis. Beim anschließenden "Zusammenbauen" knallt es beim ungültigen Datum (29.02.2017 resp. 31.02.2016). Gibt es in der aktuellen Oracle-Version inzwischen bessere Alternativen?
avatar placeholder
20
.
07
.
2016
 von  Karsten Besserdich
Hallo Stefan, ich würde an deiner Stelle eine Funktion schreiben, welche prüft ob deine Zeichenkette ein gültiges Datum ist. Gruß Karsten

SCHREIBEN SIE EINEN KOMMENTAR