Manipulação de datas no Oracle
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.

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
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!