Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So formatieren Sie Daten in Oracle

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.