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.
Popularity: 7% [?]