sql >> Database teknologi >  >> RDS >> Oracle

Sådan tjekker du datoformatet for din Oracle-session

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 NL 

Der er også andre NLS-parametre, der ikke er angivet i denne visning (såsom NLS_LANG , NLS_CREDIT og NLS_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.


  1. Er der en automatisk ændringstidsstempeltype for Oracle-kolonner?

  2. Håndtering af langsomme forespørgsler med PostgreSQL

  3. Forstå MySQL TRUNCATE TABLE ved hjælp af praktiske eksempler

  4. Hvordan får jeg det aktuelle år ved hjælp af SQL på Oracle?