Oracle Datumsfunktionen

Neben numerischen Werten und Zeichenketten existiert der häufig verwendete Datentyp date für Datum (Date) und Zeitstempel (Timestamp). Das Datum kann millisekundengenau verarbeitet werden. Im Folgenden habe ich die Oracle Datumsfunktionen zur Datumsberechnung aufgeführt, welche von mir häufig verwendet werden.

Formatierungsmaske

Die Oraclefunktionen zur Datumsberechnung und Umwandlung benötigen teilweise eine Formatierungsmaske (format_mask), welche angeben, an welcher Stelle des Strings zu Umwandlung/Berechnung sich welcher Teil des Datums befindet. Die folgende Tabelle enthält nur einen kleinen Teil der möglichen Parameter, da ich andere Parameter fast nie verwende:

ParameterBedeutungBeispiel
YYYYJahr vierstellig2008
YYJahr zweistellig08
MMMonat11
WWKalenderwoche51
DWochentag (1-7)3
DDTag im Monat15
HH24Stunde (24h-Format)13
MIMinute der Stunde45
SSSekunde der Minute34

to_date()

Mit der Funktion to_date() kann aus einem String ein Datum erzeugt werden. Dazu wird anhand der obigen Formatierungsmaske festgelegt, wie das Datum im String aufgebaut ist. Die to_date() Funktion erstellt ein Datum, wenn dieses gültig ist, ansonsten wird mit einem Fehler abgebrochen. Beispiele:

  • select to_date('02.10.2003','DD.MM.YYYY') from dual;
  • select to_date('01.01.2010 15:45','DD.MM.YYYY HH24:MI') from dual;

to_char()

Die Funktion to_char() wandelt ein Datum zurück in eine Zeichenkette um. Es werden wie bei to_date() die gleichen Parameter verwendet. Jedoch wird statt einem String mit einem Datum die Datumsvariable bzw. das Datumsfeld übergeben. Beispiele:

  • select to_char(sysdate,'YYYY') from dual; — Das aktuelle Jahr 2010 wird ausgegeben
  • select to_char(sysdate,'HH24:MI:SS') from dual; — aktuelle Uhrzeit wird ausgegeben

Mit Monaten arbeiten

Die obigen Beispiele behandeln einfache Umrechnungen. Bei Monaten können Sie mittels der Funktion last_day() kann aus einem übergebenen Datum der letzte Tag des Monats ermittelt werden. Es wird wiederum ein Datum zurückgegeben:

  • select last_day(sysdate) from dual; –Datum mit letztem Tag des aktuellen Monats wird zurückgegeben
  • select to_char( last_day(sysdate) , 'DD') from dual; –nur der letzte Tag des aktuellen Monats wird als String zurückgegeben

Einfacher ist das ermitteln des ersten Tages des Monats. Hierfür hat Oracle keine Funktion bereitgestellt

  • select to_date( sysdate, '01.MM.YYYY') from dual; — Rückgabe als String mit 01. des Monats

Da der erste Tag des Monats immer 01 ist, wird in der Funktionsmaske statt DD der Wert 01 eingetragen, da dieser nicht interpretiert, sondern direkt übernommen wird.

Die Funktion add_months() addiert eine beliebige Anzahl Monate auf ein Datum auf. Beispiel:

  • select add_months( to_date('04.05.2010','DD.MM.YYYY'), 4 ) from dual; — Gibt das Datum 04.09.2010 zurück

Einfache Berechnungen

Auf ein Datum kann eine beliege Zahl addiert oder subtrahiert werden. Der Wert 1 entspricht einem Tag. So zum Beispiel bei

  • select sysdate + 1.5 from dual;

ein Datum zurückgegeben, welches um 1,5 Tage bzw. 36 Stunden erhöht wurde.

Datum

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert