Podczas pracy z funkcjami zwracającymi daty, Oracle Database zwraca te daty na podstawie wartości NLS_DATE_FORMAT
parametr.
Istnieje również NLS_TIMESTAMP_FORMAT
parametr i NLS_TIMESTAMP_TZ_FORMAT
parametr, z których oba mają maskę formatu daty i czasu, którą można określić osobno.
Wszystkie te parametry mają swoje domyślne wartości pochodzące z NLS_TERRITORY
parametr (który domyślnie jest zależny od systemu operacyjnego).
Sprawdź ustawienia
Możemy zapytać o V$NLS_PARAMETERS
widok, aby sprawdzić aktualne wartości tych parametrów (i innych parametrów NLS):
SELECT
PARAMETER,
VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
'NLS_TERRITORY',
'NLS_DATE_FORMAT',
'NLS_TIMESTAMP_FORMAT',
'NLS_TIMESTAMP_TZ_FORMAT'
);
Wynik:
WARTOŚĆ PARAMETRU __________________________ ________________________________ NLS_TERRITORY AMERYKA 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 TZRWartość mojego
NLS_TERRITORY
parametr to AMERICA
, a różne parametry daty i godziny używają domyślnego modelu formatu dla tego terytorium.
Te wartości wpływają na formatowanie daty, gdy używamy niektórych funkcji. Na przykład, oto przykład użycia SYSDATE
aby zwrócić aktualną datę:
SELECT SYSDATE
FROM DUAL;
Wynik:
09-sierpień-21
W razie potrzeby możemy zmienić wartość parametrów NLS w zakresie sesji. Zobacz Jak zmienić format daty w sesji Oracle, aby zapoznać się z przykładami.
Inne parametry NLS
V$NLS_PARAMETERS
zawiera inne parametry oprócz wymienionych powyżej. Oto przykład zwracania wszystkich wierszy i kolumn w widoku:
SELECT *
FROM V$NLS_PARAMETERS;
Wynik:
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 NCHARBYTE_ 3 NLS_SEVIstnieją również inne parametry NLS, które nie są wymienione w tym widoku (takie jak
NLS_LANG
,NLS_CREDIT
iNLS_DEBIT
), ale można je ustawić tylko jako zmienną środowiskową (tzn. nie w sesji).Parametry NLS można ustawiać w różnych miejscach, takich jak na poziomie bazy danych, w pliku parametrów inicjalizacji, w zmiennych środowiskowych, na poziomie sesji, a nawet w ramach niektórych funkcji. Każdy z nich ma z góry określony priorytet w stosunku do pozostałych.
Wartości w zakresie sesji (jak opisano w tym artykule) zastępują wszystkie inne zakresy, z wyjątkiem przypadków, gdy jest to jawnie określone jako argument podczas wywoływania funkcji.
Zobacz Metody ustawiania parametrów NLS i ich priorytety, aby zapoznać się z tabelą przedstawiającą kolejność, jaką każdy zakres ma w stosunku do innych.
Zobacz także Jak sprawdzić wartości parametrów NLS, który obejmuje różne widoki, których można użyć do zwrócenia wartości z każdego zakresu.