Quando si lavora con funzioni che restituiscono date, Oracle Database restituisce queste date in base al valore di NLS_DATE_FORMAT
parametro.
C'è anche un NLS_TIMESTAMP_FORMAT
parametro e un NLS_TIMESTAMP_TZ_FORMAT
parametro, entrambi dotati di una maschera di formato data/ora che può essere specificata separatamente.
Tutti questi parametri hanno i loro valori predefiniti derivati da NLS_TERRITORY
parametro (che per impostazione predefinita dipende dal sistema operativo).
Controlla le impostazioni
Possiamo interrogare il V$NLS_PARAMETERS
view per controllare i valori correnti di questi parametri (e altri parametri NLS):
SELECT
PARAMETER,
VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
'NLS_TERRITORY',
'NLS_DATE_FORMAT',
'NLS_TIMESTAMP_FORMAT',
'NLS_TIMESTAMP_TZ_FORMAT'
);
Risultato:
PARAMETER VALUE __________________________ _______________________________ 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
Il valore del mio NLS_TERRITORY
il parametro è AMERICA
e i vari parametri datetime utilizzano il modello di formato predefinito per quel territorio.
Questi valori influiscono sulla formattazione della data quando utilizziamo determinate funzioni. Ad esempio, ecco un esempio di utilizzo di SYSDATE
per restituire la data corrente:
SELECT SYSDATE
FROM DUAL;
Risultato:
09-AUG-21
Se necessario, possiamo modificare il valore dei parametri NLS nell'ambito della sessione. Vedi Come modificare il formato della data nella tua sessione Oracle per esempi.
Altri parametri NLS
Il V$NLS_PARAMETERS
contiene altri parametri oltre a quelli sopra elencati. Ecco un esempio di restituzione di tutte le righe e colonne nella vista:
SELECT *
FROM V$NLS_PARAMETERS;
Risultato:
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_SEMANTICS BYTE 3 NLS_NCHAR_CONV_EXCP FALSE 3
Ci sono anche altri parametri NLS che non sono elencati in questa vista (come NLS_LANG
, NLS_CREDIT
e NLS_DEBIT
), ma possono essere impostati solo come variabile d'ambiente (cioè non nella sessione).
I parametri NLS possono essere impostati in vari punti, come a livello di database, in un file di parametri di inizializzazione, in variabili di ambiente, a livello di sessione e persino all'interno di alcune funzioni. Ognuno di questi ha una priorità predeterminata rispetto agli altri.
I valori nell'ambito della sessione (come descritto in questo articolo) hanno la precedenza su tutti gli altri ambiti, tranne quando è esplicitamente specificato come argomento quando si chiama una funzione.
Vedi Metodi per impostare i parametri NLS e le loro priorità per una tabella che delinea l'ordine di precedenza che ogni ambito ha rispetto agli altri.
Vedi anche Come controllare i valori dei parametri NLS, che copre le varie viste che puoi usare per restituire i valori da ogni ambito.