sexta-feira, 30 de abril de 2010

Formatar intervalos de datas

Quem trabalha com Oracle sabe, que se você subtrair dois campos de data, o resultado será um number, como no exemplo abaixo:

SQL> select sysdate-to_date('11/11/2009','dd/mm/rrrr')
2 from dual
3 /

SYSDATE-TO_DATE('11/11/2009','DD/MM/RRRR')
------------------------------------------
170,651424

Mas existe uma função criada a partir da versão 10g do banco, para formatar este resultado em algo que faz mais sentido para o usuário, demonstrada abaixo:

SQL> select NUMTODSINTERVAL(sysdate-to_date('11/11/2009','dd/mm/rrrr'),'day')
2 from dual
3 /

NUMTODSINTERVAL(SYSDATE-TO_DATE('11/11/2009','DD/MM/RRRR'),'DAY')
---------------------------------------------------------------------------
+000000170 15:38:07.999999999

Ou seja, existem 170 dias, 15 horas, 38 minutos e 7 segundos entre os dois intervalos de data.

A função NUMTODSINTERVAL exige o segundo parâmetro, que é a escala que o número está sendo informado, que pode ser day, hour, minute ou second. Teste com vários intervalos e verá os resultados...

Nenhum comentário: