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.