Manipulação de datas no Oracle – Parte II
No post anterior de Oracle, falamos sobre manipulação e formatação de datas no Oracle
Agora, vamos continuar a abordar o assunto com outros comandos úteis para trabalhar com datas no Oracle.
Cálculo com Datas
No manuseio de consultas via banco de dados, muitas vezes é necessário, efetuar cálculos com datas, seja para apurar a diferença entre uma data e outra, adicionar ou subtrair dias a uma data, enfim, existem diversos cenários em que precisamos efetuar operações com datas.
Por isso, agora vamos demonstrar algumas funções e comandos úteis na manipulação de datas via Oracle.
SYSDATE
A função SYSDATE retorna a data e hora corrente do servidor que esta instalado o seu banco de dados Oracle.
É comum utilizar SYSDATE a partir da tabela interna e vazia chamada DUAL.
select sysdate from dual;
Mas pode se utilizar a função TO_CHAR para formatar a saída de data:
SELECT TO_CHAR (SYSDATE, 'MM-DD-YYYY HH24:MI:SS') "Agora" FROM DUAL;
Resultado
Agora
——————-
04-13-2016 11:45:51
Operações aritméticas
É possível realizar cálculos com datas, utilizando operadores aritméticos.
Operações possíveis:
- date + number
- Adiciona um número de dias à data, retornando uma data.
- date – number
- Subtrai um número de dias da data, retornando uma data.
- date – date
- Subtrai um número de dias da data, retornando uma data.
- date + number/24
- Adiciona um número de horas à data, retornando uma data.
SELECT HIREDATE,HIREDATE-7,SYSDATE-HIREDATE FROM EMP WHERE HIREDATE LIKE '%06%'
Operação de Soma e Subtração (+ e -) com datas
No Oracle, 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
Agora que você já sabe como funciona a adição de dias a uma data no Oracle, vamos ver como adicionar meses a uma data, para isso, utiliza-se o função ADD_MONTHS, usando dessa forma:
select ADD_MONTHS(sysdate, 2) from dual;
Onde o primeiro parâmetro é a data e o segundo a quantidade de meses que se quer adicionar.
NOTA: Se é o ultimo dia do mês de janeiro, por exemplo, somando-se um mês, vai para o ultimo dia do mês de fevereiro.
Descobrir a maior data dentre algumas datas
A função utilizada para descobrir a maior data entre diversas opções é a GREATEST e pode-se passar várias datas como parâmetro, dessa forma:
select GREATEST(sysdate, sysdate-2, sysdate+5, sysdate+15, sysdate-7) from dual;
Descobrir a menor data dentre algumas datas
Já a função utilizada para descobrir a menor data entre diversas opções é a LEAST e pode-se passar várias datas como parâmetro, da seguinte forma:
select LEAST(sysdate, sysdate-1, sysdate+3, sysdate+10, sysdate-3) from dual;
Retornar o último dia de um mês
A função que informa se uma data informada é o ultimo dia de um mês é a LAST_DAY, passado como parâmetro 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 mês 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 parâmetro, dessa forma:
select NEXT_DAY(sysdate, ‘FRI’) from dual;
Dessa forma retornara a próxima sexta-feira.
Obrigado
Espero que tenham gostado de mais essas dicas para Manipulação de datas no Oracle, com estas informações você pode criar diversas consultas com calculo e operações com datas.
Se você gostou, compartilhe estas dicas com um amigo ou participe de nossas redes sociais.
Caso queira nos incentivar a criar mais conteúdos como este, prestigie nossos anunciantes.
Muito Obrigado
Um Grande Abraço
Renato Sanches
Gestor de TI – Tecnologia da Informação
Trabalha com Administração de banco de dados Oracle, SQL Server e MySQL