Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Oracle
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-05-2006
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
Smile Obtener tiempo entre fechas

Holaaaa
Necesito saber el tiempo transcurrido entre dos fechas, este es mi query:
Código:
select count(d.nunico),p.clt_id, p.pedido_id,p.fecha_hora,t.fecha_hora, 
(t.fecha_hora - p.fecha_hora)as distancia
from prodleg.pdd_deta d, prodleg.remito t,prodleg.pedido p
where p.fecha_hora BETWEEN TO_DATE('01/04/2006 00:00:00','DD/MM/YYYY hh24:mi:ss')and
TO_DATE('30/04/2006 23:59:59','DD/MM/YYYY hh24:mi:ss')
and p.CLT_ID = t.CLIENTE_ID
and p.pedido_id = t.PEDIDO_ID
and p.CLT_ID = d.clt_id
and p.pedido_id = d.PEDIDO_ID
groupby p.clt_id, p.pedido_id , p.fecha_hora, t.fecha_hora,(t.fecha_hora - p.fecha_hora)
¿Hay alguna forma de que los resultados me los devuelva en el formato hh:mi:ss? Por ejemplo, entre las fechas
12/04/2006 14:06:53 y 12/04/2006 16:41:32 que me devuelva 2:34:39.
Muchas Gracias!!

Yanina Genia
Responder Con Cita
  #2  
Antiguo 03-05-2006
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
tanto con mssql, como con delphi, (como son tipos de datos de punto flotante) con una simple resta me regresa la diferencia, la parte entera el numero de dias, y la parte decimal si hay que convertirla para que te regrese en formato hh:mm:ss
Responder Con Cita
  #3  
Antiguo 04-05-2006
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
Thumbs down ...

Y bueno pero como la convierto? La resta simple la hice.

Yanina Genia
Responder Con Cita
  #4  
Antiguo 04-05-2006
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
mmm bueno mas que convertirla usala como variable de fecha normal, solo como te digo, no le hagas caso al dia, solo a la hora...
Responder Con Cita
  #5  
Antiguo 04-05-2006
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
Thumbs down ...

A ver si nos entendemos,
mi pregunta fue:

¿Hay alguna forma de que los resultados me los devuelva en el formato hh:mi:ss? Por ejemplo, entre las fechas
12/04/2006 14:06:53 y 12/04/2006 16:41:32 que me devuelva 2:34:39.

Si me devuelve en decimal, por ejemplo 1,5476, ¿como hago para pasarla al formato hh:mi:ss?
Responder Con Cita
  #6  
Antiguo 04-05-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Por aquí encontre esta posible solución:
Código SQL [-]
create or replace function time_between (start_tm in date, end_tm in date,
   hours_only varchar2 default 'N') return varchar2 as
-- If "hours_only" is null or "N", the return will be a string formatted like:
--     2 days, 3 hrs, 5 mins, 10 secs
-- If "hours_only" is not "N", then the return is a value in hours, like 102.325
  ret_val   varchar2(80);
  start_sec number;
  end_sec   number;
  full_sec  number;
  balance   number;
  minute    number;
  hour      number;
  days      number;
--
  function get_sec (time_in in date) return number as
  begin
    return to_number(to_char(time_in,'SSSSS')); 
  end;
--
begin
  start_sec := get_sec(start_tm);
  end_sec := get_sec(end_tm);
  -- check if end time is in the same day as start time
  if to_char(start_tm,'YYMMDD') = to_char(end_tm,'YYMMDD') then
    full_sec := end_sec - start_sec;
    days := 0;
  else
    days := trunc(end_tm - start_tm);
    if days > 0 then
      ret_val := to_char(days)||' days, ';
    end if;
    if end_sec > start_sec then
      full_sec := end_sec - start_sec;
    else
      full_sec := 86400 - start_sec + end_sec;
    end if;
  end if;
  if upper(hours_only) = 'N' then
    if full_sec > 3599 then
      hour := floor(full_sec / 3600);
      balance := mod(full_sec,3600);
      full_sec := balance;
      if hour > 1 then
        ret_val := ret_val||to_char(hour)||' hrs, ';
      else
        ret_val := ret_val||to_char(hour)||' hr, ';
      end if;    
    end if;
    if full_sec > 59 then
      minute := floor(full_sec / 60);
      balance := mod(full_sec,60);
      full_sec := balance;
      if minute > 1 then
        ret_val := ret_val||to_char(minute)||' mins, ';
      else
        ret_val := ret_val||to_char(minute)||' min, ';
      end if;    
    end if;
    ret_val := ret_val||to_char(full_sec)||' secs';
  else
    -- Calculate the time difference in hours, to three decimal places
    ret_val := to_char((24 * days) + round((full_sec / 3600),3));
  end if;
  return ret_val;
end;
/
grant execute on time_between to public;
create public synonym time_between for time_between;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
función para obtener diferencias entre fechas - Firebird clanmilano SQL 1 11-11-2005 13:29:52
dias entre dos fechas davidgaldo Varios 5 19-05-2005 21:02:03
Diferiencia Entre Dos Fechas juan diego Varios 1 07-04-2005 15:03:21
Tiempo que hay entre dos fechas cmgenny Varios 3 03-10-2003 20:06:37


La franja horaria es GMT +2. Ahora son las 20:39:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi