Когато работите с функции, които връщат дати, Oracle Database връща тези дати въз основа на стойността на NLS_DATE_FORMAT
параметър.
Има и NLS_TIMESTAMP_FORMAT
параметър и NLS_TIMESTAMP_TZ_FORMAT
параметър, като и двата имат маска за формат на дата и час, която може да се посочи отделно.
Всички тези параметри имат своите стойности по подразбиране, получени от NLS_TERRITORY
параметър (който по подразбиране зависи от операционната система).
Проверете настройките
Можем да направим заявка за V$NLS_PARAMETERS
преглед, за да проверите текущите стойности на тези параметри (и други NLS параметри):
SELECT
PARAMETER,
VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
'NLS_TERRITORY',
'NLS_DATE_FORMAT',
'NLS_TIMESTAMP_FORMAT',
'NLS_TIMESTAMP_TZ_FORMAT'
);
Резултат:
СТОЙНОСТ НА ПАРАМЕТЪР __________________________ _______________________________ 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
Стойността на моя NLS_TERRITORY
параметърът е AMERICA
, а различните параметри за дата и час използват модела на формат по подразбиране за тази територия.
Тези стойности влияят на това как датата е форматирана, когато използваме определени функции. Например, ето пример за използване на SYSDATE
за да върнете текущата дата:
SELECT SYSDATE
FROM DUAL;
Резултат:
09-21 август
Можем да променим стойността на NLS параметрите в обхвата на сесията, ако е необходимо. Вижте как да промените формата на датата във вашата сесия на Oracle за примери.
Други NLS параметри
V$NLS_PARAMETERS
съдържа други параметри в допълнение към изброените по-горе. Ето пример за връщане на всички редове и колони в изгледа:
SELECT *
FROM V$NLS_PARAMETERS;
Резултат:
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 BINARY 3 NLS_LENGCSTH 3 NLS_COMP BINARY 3 NLS_LENGCSTH 3Има и други NLS параметри, които не са изброени в този изглед (като
NLS_LANG
,NLS_CREDIT
иNLS_DEBIT
), но те могат да бъдат зададени само като променлива на средата (т.е. не в сесията).NLS параметрите могат да се задават на различни места, като на ниво база данни, във файл с параметри за инициализация, в променливи на средата, на ниво сесия и дори в рамките на някои функции. Всеки от тях има предварително определен приоритет спрямо останалите.
Стойностите в обхвата на сесията (както е посочено в тази статия) отменят всички други обхвати, с изключение на случаите, когато е изрично посочен като аргумент при извикване на функция.
Вижте Методи за задаване на NLS параметри и техните приоритети за таблица, очертаваща порядъка на приоритет, който всеки обхват има спрямо останалите.
Вижте също как да проверите стойностите на параметрите на NLS, който обхваща различните изгледи, които можете да използвате, за да върнете стойностите от всеки обхват.