Dieser Artikel enthält allgemeine Beispiele für die Formatierung von Datumsangaben in Oracle Database.
Das Standard-Datumsformat für Ihre Sitzung wird durch verschiedene NLS-Initialisierungsparameter bestimmt (hier erfahren Sie, wie Sie sie überprüfen können). Sie können diese Parameter nutzen, um eine gebietsschemaabhängige Formatierung auszugeben.
Sie können auch Funktionen wie TO_CHAR(number)
verwenden um Datumsangaben in eine Zeichenfolge umzuwandeln und sie im Handumdrehen genau so zu formatieren, wie Sie es möchten.
Standard-Datumsformat
Wenn Sie ein Datum in Oracle zurückgeben, wird es standardmäßig im Standarddatumsformat für die aktuelle Sitzung zurückgegeben.
Beispiel:
SELECT DATE '2030-12-10' FROM DUAL;
Ergebnis:
10/DEC/30
In diesem Fall ist das Standarddatumsformat meiner Sitzung DD/MON/RR
, und das Ergebnis spiegelt dies wider.
Sie können das Format ändern, indem Sie entweder NLS_TERRITORY
ändern -Parameter (der implizit andere Parameter wie datetime-Parameter ändert) oder das Ändern von NLS_DATE_FORMAT
Parameter direkt.
Folgendes passiert, wenn ich NLS_TERRITORY
ändere Parameter auf ein anderes Gebiet:
ALTER SESSION SET NLS_TERRITORY = 'Germany';
SELECT DATE '2030-12-10' FROM DUAL;
Ergebnis:
10.12.30
Das standardmäßige Datumsformat wurde aktualisiert, um das Format für dieses Gebietsschema widerzuspiegeln.
Es gibt auch andere Datetime-NLS-Parameter, wie z. B. NLS_TIME_FORMAT
, NLS_TIME_TZ_FORMAT
, NLS_TIMESTAMP_FORMAT
und NLS_TIMESTAMP_TZ_FORMAT
die Sie beachten müssen, wenn Sie datetime-Formate ändern.
Siehe auch So ändern Sie das Datumsformat Ihrer Sitzung, wenn Sie das Standard-Datum/Uhrzeit-Format für Ihre aktuelle Sitzung ändern möchten.
Der TO_CHAR()
Funktion
Tder TO_CHAR(datetime)
Die Funktion akzeptiert einen datetime-Wert und gibt eine Zeichenfolge zurück, die auf eine von Ihnen angegebene Weise formatiert ist.
Hier ist ein kurzes Beispiel:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;
Ergebnis:
Wed, 26 September 2035
Hier hat die Funktion das im ersten Argument angegebene Datum in dem durch das zweite Argument angegebenen Format zurückgegeben.
Das zweite Argument liefert das Formatmodell. Das Formatmodell kann aus einem oder mehreren Formatelementen bestehen. Beispiel:Dy
ist ein Formatelement, ebenso wie DD
, Month
usw.
Wenn Sie kein Format angeben, wird es im Standardformat für die Sitzung zurückgegeben.
In dieser vollständigen Liste der Datetime-Formatelemente in Oracle finden Sie eine Liste der Formatelemente, die zum Formatieren von Datetime-Werten mit dieser Funktion verwendet werden können.
Nachfolgend finden Sie spezifischere Beispiele.
Geben Sie den Tagesnamen zurück
Bei Bedarf können Sie einzelne Datumsteile zurücksenden. Sie können beispielsweise nur den Tagesnamen, nur den Monatsnamen usw. zurückgeben. Sie müssen lediglich das entsprechende Formatelement als einziges Formatelement in Ihrem Formatmodell verwenden.
Hier ist ein Beispiel für die Rückgabe des Tagesnamens:
SELECT TO_CHAR(DATE '2035-09-26', 'Day')
FROM DUAL;
Ergebnis:
Wednesday
In diesem Fall habe ich den vollständigen Tagesnamen zurückgegeben.
Wir können Dy
verwenden wie im vorherigen Beispiel, um den kurzen Tagesnamen zurückzugeben:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy')
FROM DUAL;
Ergebnis:
Wed
Geben Sie den Monatsnamen zurück
Hier ist ein Beispiel für die Rückgabe des Monatsnamens:
SELECT TO_CHAR(DATE '2035-09-26', 'Month')
FROM DUAL;
Ergebnis:
September
Und der kurze Monatsname:
SELECT TO_CHAR(DATE '2035-09-26', 'Mon')
FROM DUAL;
Ergebnis:
Sep
Groß-/Kleinschreibung
In den vorherigen Beispielen haben wir den ersten Buchstaben für die Tages- und Monatsnamen großgeschrieben.
Wir können alternativ alle Großbuchstaben verwenden, um die Tages- und Monatsnamen in Großbuchstaben zurückzugeben, und alle Kleinbuchstaben, um sie in Kleinbuchstaben zurückzugeben.
SELECT
TO_CHAR(DATE '2035-09-26', 'DY, Dy, dy')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'DAY, Day, day')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'MON, Mon, mon')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'MONTH, Month, month')
FROM DUAL;
Ergebnis:
WED, Wed, wed WEDNESDAY, Wednesday, wednesday SEP, Sep, sep SEPTEMBER, September, september
Sprache
Der NLS_DATE_LANGUAGE
Parameter wird verwendet, um die Sprache von Datumsteilen zu bestimmen, die ausgeschrieben werden (z. B. Tagesnamen und Monatsnamen). Der Standardwert dieses Parameters wird von NLS_LANGUAGE
abgeleitet Parameter.
Hier ist ein Beispiel für die Aktualisierung von NLS_DATE_LANGUAGE
-Parameter und gibt dann ein formatiertes Datum zurück, das den Tagesnamen und den Monatsnamen enthält:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'Spanish';
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;
Ergebnis:
Mié, 26 Septiembre 2035
Die Sprache kann auch explizit innerhalb von TO_CHAR()
angegeben werden Funktion selbst. Dadurch können Sie die Standardspracheinstellungen für die aktuelle Sitzung vorübergehend außer Kraft setzen, ohne diese Einstellungen zu beeinflussen.
Beispiel:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'English';
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY',
'NLS_DATE_LANGUAGE = Spanish'
)
FROM DUAL;
Ergebnis:
Mié, 26 Septiembre 2035
In diesem Beispiel habe ich meine aktuelle Sitzung auf Englisch eingestellt und dann eine Abfrage ausgeführt, um ein Datum auf Spanisch auszugeben.
Wie bereits erwähnt, hatte die Ausgabe des Datums in Spanisch keinen Einfluss auf die englische Einstellung. Um dies zu demonstrieren, habe ich unmittelbar danach die folgende Abfrage ausgeführt (ohne die NLS_DATE_LANGUAGE
zu ändern Parameter).
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY'
)
FROM DUAL;
Ergebnis:
Wed, 26 September 2035
Wie erwartet ist das Ergebnis in Englisch, der Standardsprache für die aktuelle Sitzung.