0

Funções de data para Oracle

Em banco de dados é muito usual tratarmos de datas, particularmente gosto muito do Oracle e acho que ele não deve em nada nessa parte, ainda mais para quem utiliza a própria linguagem da Oracle o PL-SQL.

Aqui irei abordar alguns comandos para trabalhar com datas no Oracle.

 

Formatando Datas

Para formatar datas você usa o comando de converter para caracter o TO_CHAR, ele irá converter para String a DATA e nessa conversão você poderá informar o formato que você quiser e inventar o seu inclusive, você pode usar os seguintes caracteres para identificar cada elemento da data:

DIA: ‘DD’ (Dia em Números), ‘DDTH’ (Dia em Números no formato americano 15TH), ‘DAY’ (Dia por extenso)

MES: ‘MM’ (Mês em Números), ‘MON’ (Mes por extenso)

ANO: ‘YY’ (Ano em dois algarismos), ‘YYYY’ (Ano com 4 algarismos),  ‘RR’ e ‘RRRR’ (o mesmo dos anteriores formadado para o bug do milenio)

HORA: ‘HH’ (Hora no formato americano), ‘HH24′ (Hora no formato 24h)

MINUTO: ‘MI’

SEGUNDO: ‘SS’

Exemplos: select to_char(sysdate, ‘DD/MM/YYYY HH24:MI:SS’) from dual; — formato brasileiro mais comum

Cálculo com Datas

O calculo de datas sempre é necessário, saber se já passaram 2 dias de uma determinada data, qual o número de dias que faltam para uma determinada data e vários outros cenários, para isso temos as seguintes funções:

 

Operação de Soma e Subtração (+ e -)

Sempre calcula usando o número como dias e o calculo só pode ser feito data + ou – dias. Ficando assim:

select sysdate – 2 from dual;

Isso retornará o dia antes de ontem. E sendo + 2 seria o dia depois de amanhã. Ou seja, soma-se ou subtrai-se uma quantidade de dias, esse número poderá ser quebrado, representando horas. Deve-se somente dividir-se 1 por 24 por exemplo para fazer o calculo em horas.

A única função dessas duas que funciona com 2 datas é a de subtração, que retornara a diferença em numero de dias.

Operação de Adição de meses

Utiliza-se o comando ADD_MONTHS, usando dessa forma:

select ADD_MONTHS(sysdate, 2) from dual;

Onde o primeiro parametro é a data e o segundo a quantidade de meses que se quer adicionar.

NOTA: Se é o ultimo dia do mes de janeiro, por exemplo, somando-se um mes, vai para o ultimo dia do mes de fevereiro.

Descobrir a maior data dentre algumas datas

O comando para descobrir é o GREATEST e pode-se passar várias datas como parametro, dessa forma:

select GREATEST(sysdate, sysdate-1, sysdate+3, sysdate+10, sysdate-3) from dual;

Descobrir a menor data dentre algumas datas

O procedimento para descorbrir é o LEAST e pode-se passar várias datas como parametro, dessa forma:

select LEAST(sysdate, sysdate-1, sysdate+3, sysdate+10, sysdate-3) from dual;

Retorna o último dia de um mês

A função que diz o ultimo dia de um mês é LAST_DAY, passado como parametro uma data dentro do mês do qual quer se saber o ultimo dia.

select LAST_DAY(sysdate) from dual;

Calcula a quantidade de meses entres 2 datas

A função MONTHS_BETWEEN irá retornar a quantidade de meses entre duas datas, mesmo que não dê um mes inteiro a função retornara um número quebrado relativo a esse período.

select MONTHS_BETWEEN(sysdate-10, sysdate+30) from dual;

Retorna a data para o próximo dia da semana

A função NEXT_DAY retorna para uma determinada data, o próximo dia da semana definido no segundo parametro, dessa forma:

select NEXT_DAY(sysdate, ‘FRI’) from dual;

Dessa forma retornara a próxima sexta-feira.

Ficam essas dicas então para quem quiser usar datas no Oracle, é claro que com essas funções você pode criar muitas outras, quem quiser ajuda com alguma necessidade, é só perguntar.

Meison Almeida

Analista de Sistemas por formação, atuando como Gerente de Projetos e que gosta de fazer várias outras coisas.

No Comments

(Required)
(Required, will not be published)