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 07-08-2003
Avatar de Chojj
Chojj Chojj is offline
No confirmado
 
Registrado: jun 2003
Ubicación: Las Palmas de Gran Canaria
Posts: 23
Poder: 0
Chojj Va por buen camino
Question 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.
Responder Con Cita
  #2  
Antiguo 07-08-2003
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 21
marto Va por buen camino
No entiendo qué es exactamente lo que quieres hacer... ¿quieres la diferencia de dias?¿de horas?
__________________
E pur si muove
Responder Con Cita
  #3  
Antiguo 07-08-2003
Avatar de Chojj
Chojj Chojj is offline
No confirmado
 
Registrado: jun 2003
Ubicación: Las Palmas de Gran Canaria
Posts: 23
Poder: 0
Chojj Va por buen camino
Question

Lo que deseo sacar es el tiempo transcurrido desde una fecha a otra en horas y minutos.

Gracias.
Responder Con Cita
  #4  
Antiguo 08-08-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 08-08-2003
Avatar de Chojj
Chojj Chojj is offline
No confirmado
 
Registrado: jun 2003
Ubicación: Las Palmas de Gran Canaria
Posts: 23
Poder: 0
Chojj Va por buen camino
Arrow

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.
Responder Con Cita
  #6  
Antiguo 11-08-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 12-08-2003
Avatar de Chojj
Chojj Chojj is offline
No confirmado
 
Registrado: jun 2003
Ubicación: Las Palmas de Gran Canaria
Posts: 23
Poder: 0
Chojj Va por buen camino
Thumbs up

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.
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


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


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