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:
Parameter | Bedeutung | Beispiel |
---|---|---|
YYYY | Jahr vierstellig | 2008 |
YY | Jahr zweistellig | 08 |
MM | Monat | 11 |
WW | Kalenderwoche | 51 |
D | Wochentag (1-7) | 3 |
DD | Tag im Monat | 15 |
HH24 | Stunde (24h-Format) | 13 |
MI | Minute der Stunde | 45 |
SS | Sekunde der Minute | 34 |
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 ausgegebenselect 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ückgegebenselect 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.
Schreibe einen Kommentar