Lorsque vous travaillez avec des fonctions qui renvoient des dates, Oracle Database renvoie ces dates en fonction de la valeur de NLS_DATE_FORMAT
paramètre.
Il existe également un NLS_TIMESTAMP_FORMAT
paramètre et un NLS_TIMESTAMP_TZ_FORMAT
paramètre, qui ont tous deux un masque de format datetime qui peut être spécifié séparément.
Tous ces paramètres ont leurs valeurs par défaut dérivées du NLS_TERRITORY
paramètre (qui, par défaut, dépend du système d'exploitation).
Vérifiez les paramètres
Nous pouvons interroger le V$NLS_PARAMETERS
view pour vérifier les valeurs actuelles de ces paramètres (et d'autres paramètres NLS) :
SELECT
PARAMETER,
VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
'NLS_TERRITORY',
'NLS_DATE_FORMAT',
'NLS_TIMESTAMP_FORMAT',
'NLS_TIMESTAMP_TZ_FORMAT'
);
Résultat :
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
La valeur de mon NLS_TERRITORY
le paramètre est AMERICA
, et les différents paramètres datetime utilisent le modèle de format par défaut pour ce territoire.
Ces valeurs affectent la façon dont la date est formatée lorsque nous utilisons certaines fonctions. Par exemple, voici un exemple d'utilisation de SYSDATE
pour retourner la date actuelle :
SELECT SYSDATE
FROM DUAL;
Résultat :
09-AUG-21
Nous pouvons modifier la valeur des paramètres NLS dans la portée de la session si nécessaire. Voir Comment changer le format de date dans votre session Oracle pour des exemples.
Autres paramètres NLS
Le V$NLS_PARAMETERS
contient d'autres paramètres en plus de ceux listés ci-dessus. Voici un exemple de renvoi de toutes les lignes et colonnes de la vue :
SELECT *
FROM V$NLS_PARAMETERS;
Résultat :
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
Il existe également d'autres paramètres NLS qui ne sont pas répertoriés dans cette vue (tels que NLS_LANG
, NLS_CREDIT
, et NLS_DEBIT
), mais elles ne peuvent être définies qu'en tant que variable d'environnement (c'est-à-dire pas dans la session).
Les paramètres NLS peuvent être définis à divers endroits, comme au niveau de la base de données, dans un fichier de paramètres d'initialisation, dans des variables d'environnement, au niveau de la session et même dans certaines fonctions. Chacun d'eux a une priorité prédéterminée par rapport aux autres.
Les valeurs de la portée de la session (comme indiqué dans cet article) remplacent toutes les autres portées, sauf lorsqu'elles sont explicitement spécifiées comme argument lors de l'appel d'une fonction.
Voir Méthodes de définition des paramètres NLS et leurs priorités pour un tableau décrivant l'ordre de priorité de chaque portée par rapport aux autres.
Consultez également Comment vérifier les valeurs des paramètres NLS, qui couvre les différentes vues que vous pouvez utiliser pour renvoyer les valeurs de chaque étendue.