När du arbetar med funktioner som returnerar datum returnerar Oracle Database dessa datum baserat på värdet för NLS_DATE_FORMAT
parameter.
Det finns också en NLS_TIMESTAMP_FORMAT
parameter och en NLS_TIMESTAMP_TZ_FORMAT
parameter, som båda har en datetime-formatmask som kan specificeras separat.
Alla dessa parametrar har sina standardvärden härledda från NLS_TERRITORY
parameter (som som standard är operativsystemberoende).
Kontrollera inställningarna
Vi kan fråga V$NLS_PARAMETERS
visa för att kontrollera de aktuella värdena för dessa parametrar (och andra NLS-parametrar):
SELECT
PARAMETER,
VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
'NLS_TERRITORY',
'NLS_DATE_FORMAT',
'NLS_TIMESTAMP_FORMAT',
'NLS_TIMESTAMP_TZ_FORMAT'
);
Resultat:
PARAMETERVÄRDE __________________________ _______________________________ 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ärdet på min NLS_TERRITORY
parametern är AMERICA
, och de olika datetime-parametrarna använder standardformatmodellen för det området.
Dessa värden påverkar hur datumet formateras när vi använder vissa funktioner. Till exempel, här är ett exempel på hur du använder SYSDATE
för att returnera det aktuella datumet:
SELECT SYSDATE
FROM DUAL;
Resultat:
09-AUG-21
Vi kan ändra värdet på NLS-parametrarna i sessionsomfånget om det behövs. Se hur du ändrar datumformatet i din Oracle-session för exempel.
Andra NLS-parametrar
V$NLS_PARAMETERS
innehåller andra parametrar utöver de som anges ovan. Här är ett exempel på att returnera alla rader och kolumner i vyn:
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_NCHAR_LENGTH_3 NLSE_LENGTH_3 NLSE_LENGTH_3 NLS_COMPDet finns också andra NLS-parametrar som inte är listade i den här vyn (som
NLS_LANG
,NLS_CREDIT
ochNLS_DEBIT
), men de kan bara ställas in som en miljövariabel (dvs. inte i sessionen).NLS-parametrar kan ställas in på olika ställen, som på databasnivå, i en initialiseringsparameterfil, i miljövariabler, på sessionsnivå och även inom vissa funktioner. Var och en av dessa har en förutbestämd prioritet i förhållande till de andra.
Värdena i sessionsomfånget (som beskrivs i den här artikeln) åsidosätter alla andra omfång, förutom när det uttryckligen anges som ett argument när en funktion anropas.
Se Metoder för att ställa in NLS-parametrar och deras prioriteringar för en tabell som beskriver prioritetsordningen varje scope har i förhållande till de andra.
Se även Hur man kontrollerar värdena för NLS-parametrarna, som täcker de olika vyerna som du kan använda för att returnera värdena från varje scope.