Oracle - Calcular el tiempo transcurrido entre dos fechas

   
Vista:

Calcular el tiempo transcurrido entre dos fechas

Publicado por Alejandro (6 intervenciones) el 07/04/2008 22:56:25
Hola a todos!!!
Necesito calcular un tiempo transcurrido entre una fecha y hora dadas y otra.
El campo "tiempo.total" trae una fecha y hora en el formato dd/mm/yyyy hh:mm:ss AM/PM (por ej.: 08/01/4000 12:00:00 a.m.) que arrancan todas a partir del 01/01/2000.
En sybase, esta era la consulta que me traia el resultado esperado:

datediff(minute,'2000-01-01',ISNULL(tiempo.total,'2000-01-01')) as total_time

Ahora necesito realizarlo en Oracle.
¿Me podrían dar una mano con esto?

Muchas gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Calcular el tiempo transcurrido entre dos fecha

Publicado por Hector (126 intervenciones) el 08/04/2008 04:33:03
Hola.

Las fechas estan en variables de tipo fecha?

Si es asi, es tan simple como poner una variable de fecha y restar ambas:

Resta := Fecha_Final - Fecha_Inicial.

Si no estan en formato fecha, solo hay que agregar To_Date's y listo:

Resta := To_Date(Fecha_Final, 'dd/mm/yyyy hh:24:mi:ss') - To_Date(Fecha_Inicial, 'dd/mm/yyyy hh:24:mi:ss')

Dejanos saber si funciono.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular el tiempo transcurrido entre dos fecha

Publicado por Alejandro (6 intervenciones) el 08/04/2008 16:02:45
No.. No funca...
El campo "tiempo.total" trae una fecha y hora en el formato dd/mm/yyyy hh:mm:ss AM/PM (por ej.: 08/01/4000 12:00:00 a.m.), y a esta fecha le debo restar 01/01/4000 para que me traiga el tiempo que transcurrió (el contador de tiempo registra en ese campo el tiempo transcurrido desde el 01/01/4000). Intenté lo sig.:
SELECT
tiempo.total - '01/01/4000' as newtotal
FROM ....

Y no pasa nada...

intenté también:
SELECT
tiempo.total - ('01/01/4000 00:00:00')
FROM
...

y menos....

¿Alguna otra opcion?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular el tiempo transcurrido entre dos fecha

Publicado por Pedro (38 intervenciones) el 08/04/2008 16:56:25
hola buenas tardes yo he probado lo siguiente
select to_date ('08/04/2008 12:00','dd/mm/yyyy hh:mi') - to_date ('07/04/2008 12:00','dd/mm/yyyy hh:mi')
from DUAL
y te devuelve el resultado en dias, por lo que si quieres en otro formato solo tienes que hacer la conversion necesaria

Si el valor de los campos esta en tabla pues igual

Creo que te falta hacer la conversion de cadena a fecha

Espero haberte ayudado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular el tiempo transcurrido entre dos fecha

Publicado por Alejandro (6 intervenciones) el 08/04/2008 22:41:43
Esta correcto, el tema es que a mi me da error porque estoy le estoy restando a una variable que contiene una fecha y hora una fecha y hora,

SELECT TO_DATE(total,'dd/mm/yyyy hh:mi') - ('01/01/4000 12:00') AS total_time
FROM tiempo ...
Esto me da error, Oracle no me acepta la variable. Por lo que estuve preguntando, TO_DATE es solo para fechas implícitas, o sea '12/05/2008 14:15' por ejemplo, no para variables. Por ahi viene el error, ya que al individualizarlo en el SQL Plus, me arroja siempre el error sobre el formato de la variable.

¿Alguna otra opción?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular el tiempo transcurrido entre dos fecha

Publicado por Pedro (2 intervenciones) el 11/04/2008 09:24:32
Bueno a ver si esto te sirve,

creo que te falta el to_date pero en el otro lado, si es otra historia ya lo vemos

declare
total date;
vari number;
begin

total := to_date('01/01/2008 12:00','dd/mm/yyyy hh:mi');

SELECT total - to_date('01/01/4000 12:00','dd/mm/yyyy hh:mi') AS total_time
into vari
FROM dual;

dbms_output.put_line(vari);
end;

declare
total varchar2(50);
vari number;
begin

total := '01/01/2008 12:00';

SELECT to_date(total,'dd/mm/yyyy hh:mi') - to_date('01/01/4000 12:00','dd/mm/yyyy hh:mi') AS total_time
into vari
FROM dual;

dbms_output.put_line(vari);
end;

PD: muy bonito comentario.......marife
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular el tiempo transcurrido entre dos fechas

Publicado por Julio Ames (1 intervención) el 30/06/2014 17:58:02
Prueba con esto:

to_char(trunc(sysdate) + (x.fecfin - x.fecini),'hh24:mi:ss') as elapsed
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular el tiempo transcurrido entre dos fechas

Publicado por Hernaldo hpenarandabello@gmail.com (1 intervención) el 13/05/2016 16:12:37
Hola.

Gracias. Esa me sirvió, aunque no la entiendo, pero funciona. Creo que cuando pasa otro día debería no funcionar. No se, si algo pasa comentaré.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular el tiempo transcurrido entre dos fechas

Publicado por Marcela Gaiga (1 intervención) el 02/11/2016 13:59:13
Muchas Gracias Julio, me funciono para calcular la diferencia en horas entre dos fechas. No podía encontrar como pasar un número a formato hora, minutos, segundos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar