sql >> Databasteknik >  >> RDS >> Oracle

Så här kontrollerar du datumformatet för din Oracle-session

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_COMP 

Det finns också andra NLS-parametrar som inte är listade i den här vyn (som NLS_LANG , NLS_CREDIT och NLS_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.


  1. Byta ut tabellpartitioner i SQL Server:En genomgång

  2. Oracle (11.2.0.1):Hur man identifierar raden som för närvarande uppdateras av UPDATE-satsen

  3. Jämför exekveringsplaner i SQL Server

  4. SQL:Skapar en relationstabell med 2 olika auto_increment