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

TO_CHAR(datetime) Funktion in Oracle

In Oracle Database der TO_CHAR(datetime) Funktion konvertiert einen datetime- oder Intervallwert in einen VARCHAR2 Wert in dem durch das Datumsformat angegebenen Format.

Syntax

Die Syntax lautet wie folgt:

TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ])

Wo:

  • datetime kann ein Wert von DATE sein , TIMESTAMP , TIMESTAMP WITH TIME ZONE , TIMESTAMP WITH LOCAL TIME ZONE Datentyp
  • interval kann ein Wert von INTERVAL sein DAY TO SECOND , oder INTERVAL YEAR TO MONTH Datentyp
  • fmt ist ein optionales Formatmodell, das angibt, wie das Ergebnis formatiert werden soll
  • 'nlsparam' ist ein optionales Argument, das die Sprache angibt, in der Monats- und Tagesnamen und Abkürzungen zurückgegeben werden.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung:

SELECT TO_CHAR(DATE '2035-09-26', 'DY, DD MONTH YYYY')
FROM DUAL;

Ergebnis:

WED, 26 SEPTEMBER 2035

Es hat also 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.

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.

Standardformat

Wenn Sie fmt weglassen Argument wird das Ergebnis wie folgt konvertiert:

  • DATE Werte werden in Werte im Standard-Datumsformat konvertiert.
  • TIMESTAMP und TIMESTAMP WITH LOCAL TIME ZONE Werte werden in Werte im Standardzeitstempelformat konvertiert.
  • TIMESTAMP WITH TIME ZONE Werte werden in Werte im Standardzeitstempel mit Zeitzonenformat konvertiert.
  • Intervallwerte werden in die numerische Darstellung des Intervallliterals umgewandelt.

Hier ist ein Beispiel für die Umwandlung eines DATE Wert ohne Angabe des Formats:

SELECT TO_CHAR(DATE '2035-09-26')
FROM DUAL;

Ergebnis:

26/SEP/35

In diesem Fall ist das Standarddatumsformat meiner Sitzung DD/MON/RR , und das Ergebnis spiegelt dies wider. Ich weiß, dass dies das Standard-Datumsformat meiner Sitzung ist, weil ich die V$NLS_PARAMETERS abgefragt habe Ansicht, die mir den aktuellen Wert der NLS-Parameter anzeigt.

Siehe So überprüfen Sie die Werte der NLS-Parameter, wenn Sie sie überprüfen müssen.

Siehe auch So ändern Sie das Datumsformat Ihrer Sitzung, wenn Sie das Standard-Datum/Uhrzeit-Format für Ihre aktuelle Sitzung ändern möchten.

Intervall

Hier ist ein Beispiel, das einen Intervallwert im Standardformat ausgibt:

SELECT TO_CHAR(INTERVAL '25-2' YEAR TO MONTH)
FROM DUAL;

Ergebnis:

+25-02

Der 'nlsparam' Argument

Der 'nlsparam' Das Argument gibt die Sprache an, in der Monats- und Tagesnamen und Abkürzungen zurückgegeben werden. Dieses Argument kann folgende Form haben:

'NLS_DATE_LANGUAGE = language'

Beispiel:

SELECT 
    TO_CHAR(
        DATE '2035-09-26', 
        'DY, DD MONTH YYYY',
        'NLS_DATE_LANGUAGE = SPANISH'
    )
FROM DUAL;

Ergebnis:

MIÉ, 26 SEPTIEMBRE 2035

Null-Argumente

Übergabe von null ergibt null :

SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL;

Ergebnis:

null

Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null tritt als Ergebnis eines SQL SELECT auf Erklärung.

Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.

Fehlendes Argument

Der Aufruf der Funktion ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT TO_CHAR()
FROM DUAL;

Ergebnis:

Error starting at line : 1 in command -
SELECT TO_CHAR()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

Das Übergeben zu vieler Argumente führt ebenfalls zu einem Fehler:

SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL;

Ergebnis:

Error starting at line : 1 in command -
SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL
Error at Command Line : 1 Column : 72
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action: