Problem:
Sie möchten das aktuelle Datum (ohne Uhrzeit) in Oracle abrufen.
Lösung 1 (wenn Sie die Nullen als Uhrzeit nicht stören):
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Wenn Sie diese Abfrage beispielsweise am 16. Juni 2021 ausführen würden, würde die Ergebnistabelle so aussehen:
aktuelles_datum |
---|
2021-06-16T00:00:00Z |
Diskussion:
Oracle hat keinen Datentyp, der nur das Datum ohne die Uhrzeit speichert. Aber wenn Sie die Nullen anstelle der Uhrzeit nicht stören, können Sie einfach ein Datum in einem DATE
speichern Datentyp (der sowohl das Datum als auch die Uhrzeit in Oracle speichert). Um das aktuelle Datum und die Uhrzeit als DATE
zu erhalten Wert, können Sie einfach CURRENT_DATE
verwenden . Um die Zeit loszuwerden (und stattdessen Nullen zu haben), müssen Sie das Datum abschneiden:
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Lösung 2 (wenn Sie nur das Datum und keine Nullen anstelle der Uhrzeit wünschen):
SELECT TO_CHAR(CURRENT_DATE, 'yyyy-MM-dd') AS current_date FROM dual;
Wenn Sie diese Abfrage beispielsweise am 16. Juni 2021 ausführen würden, würde die Ergebnistabelle so aussehen:
aktuelles_datum |
---|
2021-06-16 |
Diskussion:
Um einen Text von VARCHAR2
zu erhalten Typ, der ein Datum speichert, können Sie TO_CHAR()
verwenden Funktion in Oracle. Als erstes Argument müssen Sie den zu konvertierenden Datums-/Zeitstempel und als zweites Argument das Format angeben, in dem Sie das Datum speichern möchten.
Da Sie das aktuelle Datum möchten, ist das erste Argument CURRENT_DATE
. Das zweite Argument ist Ihre Wahl. Beispiel:'yyyy-MM-dd'
steht für "Jahr-Monat-Tag", wobei der Monat eher numerisch als Text ist. Die folgende Tabelle zeigt einige Beispiel-Datumsformate und die entsprechende Ausgabe für das Datum 16. Juni 2021.
Datumsformat | Ergebnis |
---|---|
'JJJJ-MM-TT' | 2021-06-16 |
'JJJJ/MM/TT' | 2021/06/16 |
'JJJJ MM TT' | 2021 06 16 |
'TT-MON-JJJJ' | 16. Juni 2021 |
'TT-MON-JJ' | 16.-JUN-21 |
'MMMonat TT, JJJJ' | 16. Juni 2021 |
Hier können Sie mehr über Datumsformate lesen.