Manipulação de datas no Oracle

Compartilhe :

Inaugurando a seção sobre Oracle no WebMundi, vamos abordar a manipulação e a formatação de datas no banco de dados Oracle. Essa é a base para quem trabalha com relatórios, filtros por período e qualquer consulta SQL que envolva datas.

Como formatar datas no Oracle com a função TO_CHAR - PL SQL
Como formatar datas no Oracle com a função TO_CHAR – PL SQL

Scripts : Formatação de datas no Oracle com a função TO_CHAR

Os comandos utilizados neste post e video aula podem ser baixados de nosso Github

https://github.com/webmundi/formatar-datas-oracle-TO_CHAR-PLSQL.git

Vídeo Aula : Como Formatar Datas no Oracle com PL/SQL

Outros materiais e dicas de Oracle que recomendamos para você

Como instalar o Oracle Database 18c no Windows

▶️ https://www.webmundi.com/banco-de-dados/oracle/como-instalar-o-oracle-database-18c-no-windows/

Como instalar o SQL Developer no Windows

▶️ https://www.webmundi.com/banco-de-dados/oracle/como-instalar-o-sql-developer-no-windows/

Como desbloquear Usuário Schema HR (Schema de Exemplo) no Oracle Database 18c

▶️ https://www.webmundi.com/banco-de-dados/oracle/como-desbloquear-usuario-schema-hr-schema-de-exemplo-no-oracle-database-18c/

Linguagem PL/SQL

Para trabalhar com dados no Oracle utilizamos a Linguagem PL/SQL

PL/SQL é um acrônimo de Procedural Language/Structured Query Language.

É uma Linguagem procedural que permite a manipulação de dados e gerenciamento do banco de dados Oracle.

Normalmente para para executar scripts/programas pl/sql utilizamos programas sqlplus, sql developer, dbeaver, entre outros.

A função TO_CHAR

Para formatar datas no Oracle usamos a função TO_CHAR, que converte um valor do tipo data (ou número) para uma string. Na conversão você define o formato de saída, podendo combinar livremente os caracteres que representam cada parte da data (dia, mês, ano, hora etc.).

Sua sintaxe é a seguinte:

TO_CHAR(valor, [format_mask], [nls_language])

Parâmetros:

  • valor: número ou data que será convertido para string. Obrigatório.
  • format_mask: formato que será usado na conversão. Opcional.
  • nls_language: idioma usado na conversão (por exemplo, para exibir o nome do mês em outro idioma). Opcional.

Máscaras de formato mais usadas

A tabela abaixo resume os principais parâmetros aceitos por format_mask:

Parâmetro Explicação
YEAR Ano por extenso, em inglês
YYYY Ano com 4 dígitos
YYY / YY / Y Últimos 3, 2 ou 1 dígito(s) do ano
IYYY / IYY / IY / I Ano com base no padrão ISO (4, 3, 2 ou 1 dígito(s))
Q Trimestre do ano (1 a 4; JAN-MAR = 1)
MM Mês numérico (01-12; JAN = 01)
MON Nome abreviado do mês
MONTH Nome completo do mês
RM Mês em numeral romano (I-XII; JAN = I)
WW Semana do ano (1-53)
W Semana do mês (1-5)
IW Semana do ano com base no padrão ISO
D Dia da semana (1-7)
DAY Nome do dia
DD Dia do mês (1-31)
DDD Dia do ano (1-366)
DY Nome abreviado do dia
J Dia juliano (dias desde 1º de janeiro de 4712 a.C.)
HH / HH12 Hora do dia (1-12)
HH24 Hora do dia (0-23)
MI Minuto (0-59)
SS Segundo (0-59)
SSSSS Segundos desde a meia-noite (0-86399)
FF Frações de segundo

Exemplos práticos com TO_CHAR

A seguir, os formatos mais usados no dia a dia, sempre a partir da data atual (SYSDATE):

Mês numérico (retorna, por exemplo, 04):

SELECT TO_CHAR(SYSDATE, 'MM') FROM DUAL;

Abreviação do mês (retorna, por exemplo, ABR):

SELECT TO_CHAR(SYSDATE, 'MON') FROM DUAL;

Nome completo do mês (retorna, por exemplo, ABRIL):

SELECT TO_CHAR(SYSDATE, 'MONTH') FROM DUAL;

Dia do mês (retorna, por exemplo, 07):

SELECT TO_CHAR(SYSDATE, 'DD') FROM DUAL;

Abreviação do dia da semana (retorna, por exemplo, SEG):

SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL;

Ano com 4 dígitos (retorna, por exemplo, 2026):

SELECT TO_CHAR(SYSDATE, 'YYYY') FROM DUAL;

Últimos dois dígitos do ano (retorna, por exemplo, 26):

SELECT TO_CHAR(SYSDATE, 'YY') FROM DUAL;

Indicação de manhã ou tarde (retorna AM ou PM):

SELECT TO_CHAR(SYSDATE, 'AM') FROM DUAL;

Hora no formato 12h:

SELECT TO_CHAR(SYSDATE, 'HH') FROM DUAL;

Hora no formato 24h:

SELECT TO_CHAR(SYSDATE, 'HH24') FROM DUAL;

Minuto:

SELECT TO_CHAR(SYSDATE, 'MI') FROM DUAL;

Segundo:

SELECT TO_CHAR(SYSDATE, 'SS') FROM DUAL;

Combinando formatos

Você pode combinar vários desses parâmetros em uma única máscara para montar o formato que precisar. Por exemplo, para retornar apenas hora, minuto e segundo:

SELECT TO_CHAR(SYSDATE, 'HH24:MI:SS') FROM DUAL;

Resultado:

09:21:59

E o formato de data e hora mais comum no Brasil:

SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS') FROM DUAL;

Conclusão

Com a função TO_CHAR e as máscaras de formato apresentadas aqui, você já consegue montar praticamente qualquer formato de data ou hora nas suas consultas Oracle. No próximo post da série, vamos avançar para os cálculos com datas: somar e subtrair dias, comparar datas e descobrir prazos usando funções como ADD_MONTHS, LAST_DAY e MONTHS_BETWEEN.

Se você gostou, compartilhe este post e participe das nossas redes sociais. Conhece outras dicas de Oracle? Envie para a gente!

Posts Similares