Vish! Não entedi nads! O certo é retornar 1 mesmo! *SELECT (TO_DATE('04/02/2012 09:10:00','DD/MM/YYYY HH24:MI:SS')- TO_DATE('03/02/2012 12:20:01','DD/MM/YYYY HH24:MI:SS')) RESULT FROM DUAL =0,8680439814814814814814814814814814814815*
* SELECT CEIL(TO_DATE('04/02/2012 09:10:00','DD/MM/YYYY HH24:MI:SS')- TO_DATE('03/02/2012 12:20:01','DD/MM/YYYY HH24:MI:SS')) RESULT FROM DUAL =1* Uma diária (24 horas) e 5 minutos a mais = 2 diárias * SELECT CEIL(TO_DATE('04/02/2012 12:25:00','DD/MM/YYYY HH24:MI:SS')- TO_DATE('03/02/2012 12:20:01','DD/MM/YYYY HH24:MI:SS')) RESULT FROM DUAL =2* Como vou colocar "2" diárias se nao passou nenhuma direito? Ow Marcos, explica melhor a regra de negócio ai! Em 24 de fevereiro de 2012 17:19, Ricardo Tajiri <rhtaj...@gmail.com>escreveu: > Oi Milton, > > Com o CEIL, no terceiro exemplo do Marcos,ele vai retornar 1, que é o que > ele espera e precisa que seja retornado. > Mas não podemos nos ater somente a este exemplo, pois ele nos passou mais > outros dois que exemplificam melhor > a nacessidade real dele. Então, se você imaginar a utilização do CEIL no > segundo exemplo dele, com datas > '03/02/2012 12:20:01' e '04/02/2012 09:10:00', ele espera que o valor > retornado seja 2 (coluna qtde_dias_setor). > > O problema aí é que '04/02/2012 09:10:00' - '03/02/2012 12:20:01' < 1. Isso > porque a diferença, apesar de > já não ser a mesma data, não completa um dia por causa das horas. Então o > retorno usando a função CEIL > nesta diferença é 1 e não 2 como esperado pelo Marcos. > > > Ricardo Hideyuki Tajiri > LaRCom - FEEC - UNICAMP > > > Em 24 de fevereiro de 2012 15:30, Milton Bastos Henriquis Jr. < > miltonbas...@gmail.com> escreveu: > > > ** > > > > > > Ricardo, não entendi o motivo de não funcionar o CEIL. > > > > Poderia explicar ou então passar um exemplo prático desta função "não > > funcionando" em um caso do colega? > > > > > > On Fri, Feb 24, 2012 at 1:17 PM, Ricardo Tajiri <rhtaj...@gmail.com> > > wrote: > > > > > Se for pensar, a função CEIL não vai adiantar. Se aplicar nas 6 datas > do > > > exemplo do Marcos, com os resultados desejados, já da pra > > > perceber o problema. > > > > > > Em relação ao exemplo do ROUND, também vai dar problema caso o numero > de > > > horas restantes pra completar um dia, depois da > > > subtração, seja igual ou maior do que 12 horas (metade de um dia)... > > > > > > Tudo isso pensando no resultado como um todo e não somente no exemplo > de > > > ter entrada e saída no mesmo dia... > > > > > > Acho que uma forma de resolver por completo esse problema seja usando > > trunc > > > nas datas antes de fazer a diferença, e depois somar mais > > > um. Ou outras variações como somar mais um à data de saída antes de > > fazer a > > > diferença. > > > > > > with tabela as ( > > > select to_date('01/02/2012 07:00:00','dd/mm/yyyy hh24:mi:ss') > > data_entrada, > > > to_date('03/02/2012 12:20:00','dd/mm/yyyy hh24:mi:ss') data_saida, 3 > > > nr_esperado from dual > > > union all > > > select to_date('03/02/2012 12:20:01','dd/mm/yyyy hh24:mi:ss'), > > > to_date('04/02/2012 09:10:00','dd/mm/yyyy hh24:mi:ss'), 2 from dual > > > union all > > > select to_date('04/02/2012 09:10:00','dd/mm/yyyy hh24:mi:ss'), > > > to_date('04/02/2012 16:20:00','dd/mm/yyyy hh24:mi:ss'), 1 from dual) > > > select nr_esperado, trunc(data_saida+1) - trunc(data_entrada) nr_obtido > > > from tabela; > > > > > > NR_ESPERADO NR_OBTIDO > > > ---------------------- ---------------------- > > > 3 3 > > > 2 2 > > > 1 1 > > > > > > > > > Ricardo Hideyuki Tajiri > > > LaRCom - FEEC - UNICAMP > > > > > > > > > Em 24 de fevereiro de 2012 11:56, CLEYDSON BORGES < > > > cleydsonbsan...@gmail.com > > > > escreveu: > > > > > > > ** > > > > > > > > > > > > > > Verdade Milton! Acabei esquecendo desse detalhe. Usando a Função Ceil > > > > funciona direitinho. > > > > > > > > SELECT > > > > CEIL(TO_DATE('04/02/2012 23:20:00','DD/MM/YYYY HH24:MI:SS')- > > > > TO_DATE('04/02/2012 09:10:00','DD/MM/YYYY HH24:MI:SS')) RESULT > > > > FROM DUAL > > > > > > > > Abraço. > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > ------------------------------------ > > > > > > > > > > > ---------------------------------------------------------- > > > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de > > > inteira responsabilidade de seus remetentes. > > > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > > > > > > ---------------------------------------------------------- > > > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » > > > Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO > > ESPAÇO! > > > VISITE: http://www.oraclebr.com.br/ > > > ---------------------------------------------------------- > > > Links do Yahoo! Grupos > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > ------------------------------------ > > > -------------------------------------------------------------------------------------------------------------------------- > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de > inteira responsabilidade de seus remetentes. > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > > -------------------------------------------------------------------------------------------------------------------------- > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » > Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! > VISITE: http://www.oraclebr.com.br/ > ------------------------------------------------------------------------------------------------------------------------ > Links do Yahoo! Grupos > > > [As partes desta mensagem que não continham texto foram removidas]