Beim Arbeiten mit Funktionen, die Daten zurückgeben, gibt Oracle Database diese Daten basierend auf dem Wert von NLS_DATE_FORMAT
zurück Parameter.
Es gibt auch ein NLS_TIMESTAMP_FORMAT
Parameter und ein NLS_TIMESTAMP_TZ_FORMAT
Parameter, die beide eine Datetime-Formatmaske haben, die separat angegeben werden kann.
Alle diese Parameter haben ihre Standardwerte, die von NLS_TERRITORY
abgeleitet sind -Parameter (der standardmäßig vom Betriebssystem abhängig ist).
Überprüfen Sie die Einstellungen
Wir können die V$NLS_PARAMETERS
abfragen Ansicht, um die aktuellen Werte dieser Parameter (und anderer NLS-Parameter) zu überprüfen:
SELECT
PARAMETER,
VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
'NLS_TERRITORY',
'NLS_DATE_FORMAT',
'NLS_TIMESTAMP_FORMAT',
'NLS_TIMESTAMP_TZ_FORMAT'
);
Ergebnis:
PARAMETER VALUE __________________________ _______________________________ NLS_TERRITORY AMERICA NLS_DATE_FORMAT DD-MON-RR NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
Der Wert meines NLS_TERRITORY
Parameter ist AMERICA
, und die verschiedenen datetime-Parameter verwenden das Standardformatmodell für dieses Gebiet.
Diese Werte beeinflussen, wie das Datum formatiert wird, wenn wir bestimmte Funktionen verwenden. Hier ist beispielsweise ein Beispiel für die Verwendung von SYSDATE
um das aktuelle Datum zurückzugeben:
SELECT SYSDATE
FROM DUAL;
Ergebnis:
09-AUG-21
Wir können den Wert der NLS-Parameter im Sitzungsbereich bei Bedarf ändern. Beispiele finden Sie unter So ändern Sie das Datumsformat in Ihrer Oracle-Sitzung.
Andere NLS-Parameter
Die V$NLS_PARAMETERS
enthält neben den oben aufgeführten weitere Parameter. Hier ist ein Beispiel für die Rückgabe aller Zeilen und Spalten in der Ansicht:
SELECT *
FROM V$NLS_PARAMETERS;
Ergebnis:
PARAMETER VALUE CON_ID __________________________ _______________________________ _________ NLS_LANGUAGE AMERICAN 3 NLS_TERRITORY AMERICA 3 NLS_CURRENCY $ 3 NLS_ISO_CURRENCY AMERICA 3 NLS_NUMERIC_CHARACTERS ., 3 NLS_CALENDAR GREGORIAN 3 NLS_DATE_FORMAT DD-MON-RR 3 NLS_DATE_LANGUAGE AMERICAN 3 NLS_CHARACTERSET AL32UTF8 3 NLS_SORT BINARY 3 NLS_TIME_FORMAT HH.MI.SSXFF AM 3 NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM 3 NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR 3 NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR 3 NLS_DUAL_CURRENCY $ 3 NLS_NCHAR_CHARACTERSET AL16UTF16 3 NLS_COMP BINARY 3 NLS_LENGTH_SEMANTICS BYTE 3 NLS_NCHAR_CONV_EXCP FALSE 3
Es gibt auch andere NLS-Parameter, die in dieser Ansicht nicht aufgeführt sind (z. B. NLS_LANG
, NLS_CREDIT
und NLS_DEBIT
), aber sie können nur als Umgebungsvariable gesetzt werden (also nicht in der Sitzung).
NLS-Parameter können an verschiedenen Stellen gesetzt werden, z. B. auf Datenbankebene, in einer Initialisierungsparameterdatei, in Umgebungsvariablen, auf Sitzungsebene und sogar innerhalb einiger Funktionen. Jeder von diesen hat eine vorbestimmte Priorität in Bezug auf die anderen.
Die Werte im Sitzungsbereich (wie in diesem Artikel beschrieben) überschreiben alle anderen Bereiche, es sei denn, sie werden beim Aufrufen einer Funktion explizit als Argument angegeben.
Siehe Methoden zum Festlegen von NLS-Parametern und ihre Prioritäten für eine Tabelle, die die Vorrangreihenfolge umreißt, die jeder Bereich in Bezug auf die anderen hat.
Siehe auch How to Check the Values of the NLS Parameters, das die verschiedenen Ansichten behandelt, die Sie verwenden können, um die Werte aus jedem Bereich zurückzugeben.