Ĉ¿
Vou falar um pouco sobre algumas funções de data que podem ser utilizadas no Oracle.
O Oracle tem muitas funções para trabalhar com datas, porém, vou deixar aqui somente as que acho mais importantes, inclusive, as que usei durante minha vida de Desenvolvedor Oracle.
SYSDATE
É uma das funções mais utilizadas para desenvolvimento e administração do banco. Está função retorna a data e a hora atual do banco de dados. O Formato desta data depende da configuração do seu banco e também do software que você está utilizando.
Código:
1
SQL> SELECT SYSDATE FROM dual;
Resultado:
1
2
3
SYSDATE
---------------------
06/04/2009 10:00:54
ADD_MONTHS
Com essa função, é possível você trabalhar com datas somando meses ou subtraindo meses.
Código:
1
SQL> SELECT ADD_MONTHS(SYSDATE,1) FROM DUAL;
Resultado:
1
2
3
ADD_MONTHS(SYSDATE,1)
--------------------
06/05/2009 10:13:01
LAST_DAY
Essa função é utilizada para retornar o ultimo dia do mês que você passa como parâmetro. Muito útil para saber quantos dias tem um mês.
Código:
1
SQL> SELECT last_day(sysdate) FROM dual;
Resultado:
1
2
3
LAST_DAY(SYSDATE)
-----------------
30/04/2009 10:17:00
NEXT_DAY
Essa função é utilizada para saber o próximo dia da semana, tendo como base o parâmetro data e o dia da semana. Os dias da semana são de 1(domingo) até 7(sábado).
Código:
1
SQL> SELECT sysdate, next_day(SYSDATE,7) FROM dual;
Resultado:
1
2
3
SYSDATE NEXT_DAY(SYSDATE,7)
----------- -------------------
06/04/2009 11/04/2009
MONTHS_BETWEEN
Essa função é utilizada para saber o número de meses que existem entre duas datas. Observe que se você colocar a data atual e depois a data final, o resultado será negativo. Para este exemplo, utilizei o ADD_MONTHS para somar 5 meses ao mês atual, porém, você pode inserir qualquer parâmetro no formato de data.
Código:
1
SQL> SELECT MONTHS_BETWEEN(ADD_MONTHS(SYSDATE,5),SYSDATE) FROM DUAL;
Resultado:
1
2
3
MONTHS_BETWEEN(ADD_MONTHS(SYSDATE)
------------------------------
5
Não poderia deixar faltar o calculo entre dois campos datas… uma dor de cabeça para muitos desenvolvedores… o motivo? É que quando calculado (subtraido) dois campos de data e hora, o resultado é uma conversão. Exemplo abaixo teria um resultado exatamente assim… 3,12013888888889, porém, quando usado a soma ao campo hora com valor 00:00, o que não influencia em nada o resultado, o Oracle converte novamente o calculo para data hora, ficando mais fácil de entender. Existem outras formas de fazer a conversão, multiplicando pela quantidade de minutos ou quantidade de horas existentes em um dia… cada problema exige uma solução. Da forma apresentada aqui é uma das formas que atendem a maioria dos problemas e alem de fácil é elegante.
Código:
1
2
3
4
5
SQL> SELECT TAB.DT_ADMISSAO,TAB.HR_ADMISSAO,TAB.DT_DEMISSAO,TAB.HR_DEMISSAO,
(TO_DATE(TO_CHAR(TAB.DT_DEMISSAO,'DD/MM/YYYY')||' '||TO_CHAR(TAB.HR_DEMISSAO,'HH24:MI'),'DD/MM/YYYY HH24:MI') -
TO_DATE(TO_CHAR(TAB.DT_ADMISSAO,'DD/MM/YYYY')||' '||TO_CHAR(TAB.HR_ADMISSAO,'HH24:MI'),'DD/MM/YYYY HH24:MI')) +
TO_DATE('00:00','HH24:MI') CALCULO
FROM TAB_EXEMPLO;
Resultado:
1
2
3
DT_ADMISSAO HR_ADMISSAO DT_DEMISSAO HR_DEMISSAO CALCULO
----------- ------------ -------------- -------------- ------------------
03/04/2009 07:27 06/04/2009 10:20 04/04/2009 02:53:00
O valor exato do calculo deveria ser 03/04/2009 02:53, porém, como estou trabalhando com datas e o primeiro dia do mês é o número 1, logo, quando vou calcular, ele soma o 1 ao valor do calculo, 3, dando como resultado o 04. Nada que uma função não resolva…
O Oracle não permite somar dois campos data, ele apresenta o erro ora-00975: date + date not allowed.
A forma mais fácil de você somar dois campos datas, é você trabalhar com horas e/ou minutos.
Caso queira somar uma hora a uma data, basta você somar (1/24) (equivale a uma hora). Caso queira somar um minuto, você tem que somar (1/24/60) ou (1/1440).
Explicando melhor
(1/24/60) ou (1/1440)
Em vermelho corresponde a quantidade que deseja somar, neste caso, uma hora ou um minuto
Em verde claro corresponde a quantidade de horas em um dia e em azul, temos a quantidade de minutos existente em uma hora.
No segundo exemplo, em vermelho, tem o mesmo significado do primeiro exemplo e em laranja, temos a quantidade de minutos existente em 24 horas
Comandos git do dia a dia
Ĉ¿ #Criando um projeto do zero echo "# UBBOAT_App" >> README.md git init git add README.md git commit -m "first commi...
-
Ĉ¿ RESUMO ORACLE FUNÇÕES DE LINHA • FUNÇÕES DE CARACTERES Ex. 1) LOWER (cadeia) – Converte caracteres alfabéticos em letras minúscul...
-
Ĉ¿ Vou falar um pouco sobre algumas funções de data que podem ser utilizadas no Oracle. O Oracle tem muitas funções para trabalhar com d...
-
Ĉ¿ Bom dia, após algum tempo sem realizar post estou de volta. Agora com foco em SQL SERVER e QLIK VIEW ferramentas que estou trabalhand...