Perda de 1 hora no calculo

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
dark neo
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Qui, 27 Set 2012 3:06 pm

pessoal tenho esta query

Selecionar tudo

with t0 as (
select 
  to_date('11/10/2010 00:00:00','dd/mm/yyyy hh24:mi:ss') data_inicial, 
  to_date('11/10/2010 23:59:59','dd/mm/yyyy hh24:mi:ss') data_final
from dual),
t1 as (
select data_final - data_inicial diferenca from t0
)
select 
  trunc(diferenca)*12 + trunc((diferenca - trunc(diferenca))*24) horas
from t1;

que me retona 23 horas eu estou perdendo 1 hora

o mesmo ocorre aqui..

Selecionar tudo

with t0 as (
select 
  to_date('11/10/2010 08:00:00','dd/mm/yyyy hh24:mi:ss') data_inicial, 
  to_date('15/10/2010 10:00:00','dd/mm/yyyy hh24:mi:ss') data_final
from dual),
t1 as (
select data_final - data_inicial diferenca from t0
)
select 
  trunc(diferenca)*12 + trunc((diferenca - trunc(diferenca))*24) horas
from t1;

que me retorna 49 horas e não 50 horas, como faço pra recuperar esta hora perdida??
abraço e obrigado a todos!!
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

É só a diferença que você precisa?

Se for, dá para simplificar assim:

Selecionar tudo

with t0 as (
select
  to_date('11/10/2010 00:00:00','dd/mm/yyyy hh24:mi:ss') data_inicial,
  to_date('11/10/2010 23:59:59','dd/mm/yyyy hh24:mi:ss') data_final
from dual)
select round((data_final - data_inicial) * 24) diferenca
  from t0;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes