Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como formatar datas no Oracle


Este artigo contém exemplos comuns de formatação de datas no Oracle Database.

O formato de data padrão para sua sessão é determinado por vários parâmetros de inicialização do NLS (veja como verificá-los). Você pode aproveitar esses parâmetros para gerar formatação com reconhecimento de localidade.

Você também pode usar funções como TO_CHAR(number) para converter datas em uma string e formatá-las exatamente como você gosta em tempo real.

Formato de data padrão


Quando você retorna uma data no Oracle, por padrão, ela é retornada no formato de data padrão para a sessão atual.

Exemplo:
SELECT DATE '2030-12-10' FROM DUAL;

Resultado:
10/DEC/30

Nesse caso, o formato de data padrão da minha sessão é DD/MON/RR , e o resultado reflete isso.

Você pode alterar o formato alterando o NLS_TERRITORY (que altera implicitamente outros parâmetros, como parâmetros de data e hora), ou alterando o NLS_DATE_FORMAT parâmetro diretamente.

Veja o que acontece quando eu mudo o NLS_TERRITORY parâmetro para um território diferente:
ALTER SESSION SET NLS_TERRITORY = 'Germany';
SELECT DATE '2030-12-10' FROM DUAL;

Resultado:
10.12.30

O formato de data padrão foi atualizado para refletir o formato dessa localidade.

Há também outros parâmetros NLS de data e hora, como NLS_TIME_FORMAT , NLS_TIME_TZ_FORMAT , NLS_TIMESTAMP_FORMAT e NLS_TIMESTAMP_TZ_FORMAT que você precisa estar ciente ao alterar os formatos de data e hora.

Consulte também Como alterar o formato de data da sua sessão se quiser alterar o formato de data e hora padrão para sua sessão atual.

O TO_CHAR() Função


Tele TO_CHAR(datetime) A função aceita um valor de data e hora e retorna uma string formatada da maneira que você especificar.

Aqui está um exemplo rápido:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;

Resultado:
Wed, 26 September 2035

Aqui, a função retornou a data fornecida no primeiro argumento, no formato especificado pelo segundo argumento.

O segundo argumento fornece o modelo de formato. O modelo de formato pode consistir em um ou mais elementos de formato. Por exemplo, Dy é um elemento de formato, assim como DD , Month , etc

Se você não especificar um formato, ele será retornado usando o formato padrão para a sessão.

Consulte esta lista completa de elementos de formato de data e hora no Oracle para obter uma lista de elementos de formato que podem ser usados ​​para formatar valores de data e hora com esta função.

Abaixo estão exemplos mais específicos.

Retorne o nome do dia


Você pode devolver partes de datas individuais, se necessário. Por exemplo, você pode retornar apenas o nome do dia, apenas o nome do mês etc. Tudo o que você precisa fazer é usar o elemento de formato aplicável como o único elemento de formato em seu modelo de formato.

Aqui está um exemplo de retorno do nome do dia:
SELECT TO_CHAR(DATE '2035-09-26', 'Day')
FROM DUAL;

Resultado:
Wednesday

Nesse caso, retornei o nome completo do dia.

Podemos usar Dy como no exemplo anterior para retornar o nome curto do dia:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy')
FROM DUAL;

Resultado:
Wed

Retorne o nome do mês


Aqui está um exemplo de retorno do nome do mês:
SELECT TO_CHAR(DATE '2035-09-26', 'Month')
FROM DUAL;

Resultado:
September

E o nome curto do mês:
SELECT TO_CHAR(DATE '2035-09-26', 'Mon')
FROM DUAL;

Resultado:
September

Sensibilidade de maiúsculas e minúsculas


Nos exemplos anteriores, colocamos a primeira letra em maiúscula para os nomes de dia e mês.

Alternativamente, podemos usar todas as letras maiúsculas para retornar os nomes do dia e do mês em letras maiúsculas e todas as letras minúsculas para devolvê-los em letras minúsculas.
SELECT 
    TO_CHAR(DATE '2035-09-26', 'DY, Dy, dy')
FROM DUAL
UNION ALL
SELECT 
    TO_CHAR(DATE '2035-09-26', 'DAY, Day, day')
FROM DUAL
UNION ALL
SELECT 
    TO_CHAR(DATE '2035-09-26', 'MON, Mon, mon')
FROM DUAL
UNION ALL
SELECT 
    TO_CHAR(DATE '2035-09-26', 'MONTH, Month, month')
FROM DUAL;

Resultado:
WED, Wed, wed                           
WEDNESDAY, Wednesday, wednesday         
SEP, Sep, sep                           
SEPTEMBER, September, september         

Idioma


O NLS_DATE_LANGUAGE O parâmetro é usado para determinar o idioma das partes da data que são soletradas (como nomes de dias e nomes de meses). O valor padrão deste parâmetro é derivado do NLS_LANGUAGE parâmetro.

Aqui está um exemplo de atualização do NLS_DATE_LANGUAGE parâmetro, retornando uma data formatada que inclui o nome do dia e o nome do mês:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'Spanish';
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;

Resultado:
Mié, 26 Septiembre 2035

O idioma também pode ser especificado explicitamente de dentro do TO_CHAR() função em si. Isso permite que você substitua temporariamente as configurações de idioma padrão da sessão atual, sem afetar essas configurações.

Exemplo:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'English';
SELECT TO_CHAR(
    DATE '2035-09-26', 
    'Dy, DD Month YYYY',
    'NLS_DATE_LANGUAGE = Spanish'
    )
FROM DUAL;

Resultado:
Mié, 26 Septiembre 2035

Neste exemplo, configurei minha sessão atual para usar o inglês e executei uma consulta para gerar uma data usando o espanhol.

Conforme mencionado anteriormente, a saída da data em espanhol não afetou a configuração em inglês. Para demonstrar isso, executei a seguinte consulta imediatamente após essa (sem alterar o NLS_DATE_LANGUAGE parâmetro).
SELECT TO_CHAR(
    DATE '2035-09-26', 
    'Dy, DD Month YYYY'
    )
FROM DUAL;

Resultado:
Wed, 26 September 2035

Como esperado, o resultado está em inglês, que é o idioma padrão da sessão atual.