PDA

Ver la Versión Completa : Restar horas en SQL/PLUS de ORACLE


Chojj
07-08-2003, 14:55:44
En la SQL que hago todo lo referente a formato de fechas y demas esta todo controlado, pero cuando intento restar las horas y minutos no hay forma de poder hacerlo.

select to_char(MIN(fecha),'HH24:MI') Hori,
to_char(MAX(fecha),'HH24:MI') Horf,
to_char(MAX(a.fei),'HH24')-to_char(MIN(a.fei),'HH24') DifHor
from ...

He jugado con number, decode y todo lo que se me ha ocurrido.
Ahora estoy jugando con el QReport, a ver si por programación logro lo que busco.

Pero lo de la SQL me ha dejado con ganas de consegirlo, directamente por SQL.

Saludos.

marto
07-08-2003, 18:59:09
No entiendo qué es exactamente lo que quieres hacer... ¿quieres la diferencia de dias?¿de horas?

Chojj
07-08-2003, 21:51:18
Lo que deseo sacar es el tiempo transcurrido desde una fecha a otra en horas y minutos.

Gracias.

jachguate
08-08-2003, 01:54:36
y porque no haces simplemente



Select max(fecha), min(fecha), (max(fecha) - min(fecha)) * 24 Horas
from tutabla
where tuscondiciones;


luego en quickreport podes darle formato de horas.

Vas a obtener un número donde 1.5, representa 1:30

Hasta luego.

;)

Chojj
08-08-2003, 14:18:33
Lo primero gagradecer a marto y a jachguate, sus respuestas al mensaje original.

Pero todabia no he logrado conseguir lo que quiero.

He realizado las pruebas tal como me aconsejo jachguate, pero tal como les pongo a continuación, no me cuadra el tiempo conseguido.

Por ejemplo:
fecha inicio fecha final Resultado
06/08/2003 06:30:34 06/08/2003 11:03:15 4,5447
06/08/2003 10:57:00 06/08/2003 16:00:00 5,05
06/08/2003 04:43:29 06/08/2003 08:09:50 3,4391

El primero realmente son 04:32.
El segundo son 05:03, pase porque puede ser un redondeo.
El tercero son 03:26.

En QR. he realizado las pruebas pertientes con el evaluador de expresiones y no consigo que me ponga el tiempo transcurridoen condiciones.

Saludos.

jachguate
11-08-2003, 19:04:36
es justamente lo que te está devolviendo la consulta... en decimal.

Luego, vos podes formatearlo en un campo calculado, no???

06/08/2003 06:30:34 06/08/2003 11:03:15 4,5447

El primero realmente son 04:32.

0.5447 * 60 = 0:32:41 + 4 = 4:32:41

hasta luego.

;)

Chojj
12-08-2003, 15:22:25
Muchisimas gracias, las ideas proporcionadas por jachguate me han orientado bastante.
Aquí les envio la SQL final, tal como yo queria al QR. llegan los datos limpios, solo hay que imprimirlos.

SQL:
select MIN(fecha),MAX(fecha),
floor((MAX(fecha)-MIN(fecha))*24)||':'||
round((((MAX(fecha)-MIN(fecha))*24)-(floor((MAX(fecha)-MIN(fecha))*24)))*60,0) Tiempo
from tabla(s)
where condiciones
and mas condiciones
etc.

Repito las gracias y les envio un saludo.