Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Oracle (https://www.clubdelphi.com/foros/forumdisplay.php?f=22)
-   -   Restar horas en SQL/PLUS de ORACLE (https://www.clubdelphi.com/foros/showthread.php?t=2801)

Chojj 07-08-2003 14:55:44

Restar horas en SQL/PLUS de ORACLE
 
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


Código:

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.


La franja horaria es GMT +2. Ahora son las 18:00:15.

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