Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Oracle y horas

Estas en el tema de Oracle y horas en el foro de Bases de Datos General en Foros del Web. Hola a todos compañeros programadores me podrias ayudar de como puedo insertar solamenta la hora en oracle 9i.muchas gracias...
  #1 (permalink)  
Antiguo 13/05/2004, 10:37
 
Fecha de Ingreso: febrero-2004
Ubicación: andorra
Mensajes: 406
Antigüedad: 20 años, 2 meses
Puntos: 1
Oracle y horas

Hola a todos compañeros programadores me podrias ayudar de como puedo insertar solamenta la hora en oracle 9i.muchas gracias
__________________
vuestro amigo franju
  #2 (permalink)  
Antiguo 13/05/2004, 14:21
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
select to_char(sysdate, 'HH24:MI:SS') as "Hora"
from dual;
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #3 (permalink)  
Antiguo 15/05/2004, 03:58
Avatar de jachguate  
Fecha de Ingreso: enero-2003
Ubicación: Guatemala
Mensajes: 66
Antigüedad: 21 años, 3 meses
Puntos: 0
el inconveniente de la solución de Linterns es que insertas una cadena de texto que contiene la hora. Esto puede o no ser útil dependiendo de tus necesidades...

Si queres hacer "aritmética de horas" con estos datos (lo que sea que esto signifique) te convendria mas almacenarlo en forma de un número...

algo como:
Código:
Insert into tabla (hora)
values (sysdate - trunc(sysdate));
insertará la hora como una fracción del día

o bien

Código:
Insert into tabla (hora)
values ((sysdate - trunc(sysdate)) * 24);
insertará la cantidad de horas transcurridas desde la media noche. por ejemplo 17.5 para las 5:30 PM.

Hasta luego.

;)
__________________
Juan Antonio Castillo Hernández

Visitá el blog de jachguate
  #4 (permalink)  
Antiguo 01/09/2010, 12:32
Avatar de SangrePura  
Fecha de Ingreso: febrero-2006
Mensajes: 28
Antigüedad: 18 años, 2 meses
Puntos: 0
Mensaje Respuesta: Oracle y horas

Hola jachguate,

Como bien lo dijiste, se trata de aritmética de horas. Te cuento mi problema:

Necesito realizar operaciones aritméticas con datos de hora en la base express de Oracle (sumar horas y minutos) , nada difícil, sólo que no se me ocurre cómo hacerlo. Por ejemplo, tengo que poner que trabajé 1:40 hs en un determinado proyecto y 1:30 en otro. El problema es que la suma de estos valores se hace a través de NUMBER y me muestra 2 horas y 70 minutos en vez de 3 horas y 10 minutos

Con Apex Express no es complicada la suma de las horas porque son valores numéricos redondos, pero me matan los minutos. Entonces me surge la necesidad de tratar los valores como datos de hora exclusivamente. Se me ocurrió probar con datos TIMESTAMP pero éste es básicamente una extensión de DATE y no creo que se ajuste a mi necesidad.

Agradezco cualquier sugerencia al respecto.
Saludos!
  #5 (permalink)  
Antiguo 01/09/2010, 16:47
Avatar de jachguate  
Fecha de Ingreso: enero-2003
Ubicación: Guatemala
Mensajes: 66
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Oracle y horas

Cita:
Iniciado por SangrePura Ver Mensaje
Hola jachguate,

Como bien lo dijiste, se trata de aritmética de horas. Te cuento mi problema:
Necesito realizar operaciones aritméticas con datos de hora en la base express de Oracle (sumar horas y minutos) , nada difícil, sólo que no se me ocurre cómo hacerlo. Por ejemplo, tengo que poner que trabajé 1:40 hs en un determinado proyecto y 1:30 en otro. El problema es que la suma de estos valores se hace a través de NUMBER y me muestra 2 horas y 70 minutos en vez de 3 horas y 10 minutos

Con Apex Express no es complicada la suma de las horas porque son valores numéricos redondos, pero me matan los minutos. Entonces me surge la necesidad de tratar los valores como datos de hora exclusivamente. Se me ocurrió probar con datos TIMESTAMP pero éste es básicamente una extensión de DATE y no creo que se ajuste a mi necesidad.

Agradezco cualquier sugerencia al respecto.
Saludos!

En tu caso, si usas date o timestamp, seguro te encontrarás con algunos otros casos interesantes.

Por ejemplo, si en un proyecto trabajaste 15:30 horas y en otro 10:00 horas, la suma es 25:30 horas, o una fecha x a la 1:30 AM?

Si usas mi sugerencia anterior (de hace 6 años!!) y almacenas fracciones de día o fracciones de hora, podrás hacer aritmética tranquilamente y luego "convertir" solo para presentar los datos.

Por ejemplo, si almacenas 1.5 en lugar de 1:30 hrs, y 1.66666666667 en lugar de 1:40, la suma te dará 3.16666666667, lo que puede convertirse nuevamente a 3:10 con relativa facilidad.

por ejemplo:
Código:
select to_char(trunc(horas), '00')||':'||to_char((horas-trunc(horas))*60, 'FM00') 
  from (select 1.5 + 1.6666666666666666666666 horas from dual);
La conversión al "formato de visualización" podrías hacerla no solo en un query, sino a nivel del front-end que uses para mostrar los datos. De la misma forma, convertir los datos ingresador por el usuario en decimal antes de llevarlos a la BD.

Un saludo.
__________________
Juan Antonio Castillo Hernández

Visitá el blog de jachguate
  #6 (permalink)  
Antiguo 11/09/2010, 19:58
Avatar de SangrePura  
Fecha de Ingreso: febrero-2006
Mensajes: 28
Antigüedad: 18 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Oracle y horas

jachguate, muchas gracias por tu tiempo, el ejemplo está excelente...

y sí, 6 años es bastante jaja pero bueno el tema del foro se ajustaba al pie de la letra con mi problema así que no lo dudé y comenté.

una vez más agradecerte por la ayuda.

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:43.