Cuando se trabaja con funciones que devuelven fechas, Oracle Database devuelve estas fechas en función del valor de NLS_DATE_FORMAT
parámetro.
También hay un NLS_TIMESTAMP_FORMAT
parámetro y un NLS_TIMESTAMP_TZ_FORMAT
parámetro, los cuales tienen una máscara de formato de fecha y hora que se puede especificar por separado.
Todos estos parámetros tienen sus valores predeterminados derivados del NLS_TERRITORY
parámetro (que por defecto depende del sistema operativo).
Compruebe la configuración
Podemos consultar el V$NLS_PARAMETERS
vista para verificar los valores actuales de estos parámetros (y otros parámetros NLS):
SELECT
PARAMETER,
VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
'NLS_TERRITORY',
'NLS_DATE_FORMAT',
'NLS_TIMESTAMP_FORMAT',
'NLS_TIMESTAMP_TZ_FORMAT'
);
Resultado:
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
El valor de mi NLS_TERRITORY
el parámetro es AMERICA
y los diversos parámetros de fecha y hora usan el modelo de formato predeterminado para ese territorio.
Estos valores afectan cómo se formatea la fecha cuando usamos ciertas funciones. Por ejemplo, aquí hay un ejemplo del uso de SYSDATE
para devolver la fecha actual:
SELECT SYSDATE
FROM DUAL;
Resultado:
09-AUG-21
Podemos cambiar el valor de los parámetros NLS en el alcance de la sesión si es necesario. Consulte Cómo cambiar el formato de fecha en su sesión de Oracle para ver ejemplos.
Otros parámetros NLS
Los V$NLS_PARAMETERS
contiene otros parámetros además de los enumerados anteriormente. Aquí hay un ejemplo de devolver todas las filas y columnas en la vista:
SELECT *
FROM V$NLS_PARAMETERS;
Resultado:
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
También hay otros parámetros NLS que no aparecen en esta vista (como NLS_LANG
, NLS_CREDIT
y NLS_DEBIT
), pero solo se pueden configurar como una variable de entorno (es decir, no en la sesión).
Los parámetros NLS se pueden configurar en varios lugares, como a nivel de base de datos, en un archivo de parámetros de inicialización, en variables de entorno, a nivel de sesión e incluso dentro de algunas funciones. Cada uno de estos tiene una prioridad predeterminada en relación con los demás.
Los valores en el ámbito de la sesión (como se describe en este artículo) anulan todos los demás ámbitos, excepto cuando se especifica explícitamente como un argumento al llamar a una función.
Consulte Métodos de configuración de parámetros NLS y sus prioridades para obtener una tabla que describe el orden de precedencia que tiene cada ámbito en relación con los demás.
Consulte también Cómo verificar los valores de los parámetros NLS, que cubre las diversas vistas que puede usar para devolver los valores de cada ámbito.