Ao trabalhar com funções que retornam datas, o Oracle Database retorna essas datas com base no valor do
NLS_DATE_FORMAT
parâmetro. Há também um
NLS_TIMESTAMP_FORMAT
parâmetro e um NLS_TIMESTAMP_TZ_FORMAT
parâmetro, ambos com uma máscara de formato de data e hora que pode ser especificada separadamente. Todos esses parâmetros têm seus valores padrão derivados do
NLS_TERRITORY
parâmetro (que, por padrão, é dependente do sistema operacional). Verifique as configurações
Podemos consultar os
V$NLS_PARAMETERS
view para verificar os valores atuais desses parâmetros (e outros 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
O valor do meu
NLS_TERRITORY
parâmetro é AMERICA
, e os vários parâmetros de data e hora usam o modelo de formato padrão para esse território. Esses valores afetam como a data é formatada quando usamos determinadas funções. Por exemplo, aqui está um exemplo de uso de
SYSDATE
para retornar a data atual:SELECT SYSDATE
FROM DUAL;
Resultado:
09-AUG-21
Podemos alterar o valor dos parâmetros NLS no escopo da sessão, se necessário. Consulte Como alterar o formato de data em sua sessão Oracle para obter exemplos.
Outros parâmetros NLS
Os
V$NLS_PARAMETERS
contém outros parâmetros além dos listados acima. Aqui está um exemplo de retorno de todas as linhas e colunas na exibição: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
Há também outros parâmetros NLS que não estão listados nesta visualização (como
NLS_LANG
, NLS_CREDIT
e NLS_DEBIT
), mas eles só podem ser definidos como uma variável de ambiente (ou seja, não na sessão). Os parâmetros NLS podem ser definidos em vários locais, como no nível do banco de dados, em um arquivo de parâmetro de inicialização, em variáveis de ambiente, no nível de sessão e até mesmo em algumas funções. Cada um deles tem uma prioridade predeterminada em relação aos outros.
Os valores no escopo da sessão (conforme descrito neste artigo) substituem todos os outros escopos, exceto quando é explicitamente especificado como um argumento ao chamar uma função.
Consulte Métodos de configuração de parâmetros NLS e suas prioridades para obter uma tabela descrevendo a ordem de precedência que cada escopo tem em relação aos outros.
Consulte também Como verificar os valores dos parâmetros NLS, que abrange as várias exibições que você pode usar para retornar os valores de cada escopo.