Når du arbejder med funktioner, der returnerer datoer, returnerer Oracle Database disse datoer baseret på værdien af NLS_DATE_FORMAT
parameter.
Der er også en NLS_TIMESTAMP_FORMAT
parameter og en NLS_TIMESTAMP_TZ_FORMAT
parameter, som begge har en datetime-formatmaske, der kan specificeres separat.
Alle disse parametre har deres standardværdier afledt af NLS_TERRITORY
parameter (som som standard er operativsystemafhængig).
Tjek indstillingerne
Vi kan forespørge på V$NLS_PARAMETERS
view for at kontrollere de aktuelle værdier for disse parametre (og andre NLS-parametre):
SELECT
PARAMETER,
VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
'NLS_TERRITORY',
'NLS_DATE_FORMAT',
'NLS_TIMESTAMP_FORMAT',
'NLS_TIMESTAMP_TZ_FORMAT'
);
Resultat:
PARAMETERVÆRDI __________________________ _______________________________ 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
Værdien af min NLS_TERRITORY
parameteren er AMERICA
, og de forskellige datetime-parametre bruger standardformatmodellen for det pågældende område.
Disse værdier påvirker, hvordan datoen formateres, når vi bruger visse funktioner. For eksempel, her er et eksempel på brug af SYSDATE
for at returnere den aktuelle dato:
SELECT SYSDATE
FROM DUAL;
Resultat:
09-AUG-21
Vi kan ændre værdien af NLS-parametrene i sessionsomfanget, hvis det kræves. Se hvordan du ændrer datoformatet i din Oracle-session for eksempler.
Andre NLS-parametre
V$NLS_PARAMETERS
indeholder andre parametre ud over dem, der er anført ovenfor. Her er et eksempel på returnering af alle rækker og kolonner i visningen:
SELECT *
FROM V$NLS_PARAMETERS;
Resultat:
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_3 NLS_LENGTH_3 NLS_LENGTH_3 NLS_LENGTH_3 NLS_LENGTH_3 NLS_LENGTH_3 NLDer er også andre NLS-parametre, der ikke er angivet i denne visning (såsom
NLS_LANG
,NLS_CREDIT
ogNLS_DEBIT
), men de kan kun indstilles som en miljøvariabel (dvs. ikke i sessionen).NLS-parametre kan indstilles forskellige steder, såsom på databaseniveau, i en initialiseringsparameterfil, i miljøvariabler, på sessionsniveau og endda inden for nogle funktioner. Hver af disse har en forudbestemt prioritet i forhold til de andre.
Værdierne i sessionsomfanget (som beskrevet i denne artikel) tilsidesætter alle andre omfang, undtagen når det udtrykkeligt er angivet som et argument, når en funktion kaldes.
Se metoder til indstilling af NLS-parametre og deres prioriteter for en tabel, der skitserer prioritetsrækkefølgen, som hvert scope har i forhold til de andre.
Se også Sådan kontrollerer du værdierne for NLS-parametrene, som dækker de forskellige visninger, som du kan bruge til at returnere værdierne fra hvert omfang.