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

Diferencias entre horas

Estas en el tema de Diferencias entre horas en el foro de Mysql en Foros del Web. hola tengo el sig problema: tengo un campo con una hora de 17:00:00 y quiero sacar la diferencia con campo con la hora de 00:20:00 ...
  #1 (permalink)  
Antiguo 08/05/2009, 15:46
Avatar de Zeptimo  
Fecha de Ingreso: enero-2008
Mensajes: 269
Antigüedad: 16 años, 10 meses
Puntos: 1
De acuerdo Diferencias entre horas

hola


tengo el sig problema:


tengo un campo con una hora de 17:00:00 y quiero sacar la diferencia con campo con la hora de 00:20:00 osea las 12::20:00, pero al momento de sacar la diferencia me lo pone de la sig manera:

-16:40:00 pero yo nescesito que me salga de la sig manera:

07:20:00 ose 7 hora con 20 minutos de diferencia





saludos........................
  #2 (permalink)  
Antiguo 08/05/2009, 17:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Diferencias entre horas

Zeptimo,
el programa hace lo que le pides, porque de manera absoluta 00:20:00 son 20 minutos y no puedes quitarle a esa cantidad 17:00:00; y si lo haces te sale negativo. Si lo que piensas es que 00:20:00 son las 12 horas de la noche y 20 minutos, te equivocas. De manera absoluta eso sería 24:20:00. Prueba a ponerlo y verás que funciona. Pero si lo estás usando con fecha
17:00:00 sería de un día y 00:20:00 correspondería si quieres al siguiente, pero lo tendrías que tener almacenado y restar la fecha y hora completa.
Espero haberme explicado.
  #3 (permalink)  
Antiguo 09/05/2009, 09:20
Avatar de Zeptimo  
Fecha de Ingreso: enero-2008
Mensajes: 269
Antigüedad: 16 años, 10 meses
Puntos: 1
De acuerdo Respuesta: Diferencias entre horas

tienes razon me equivoque no heran las 12:20 si no las 24:20,yo se que las 00:20:00 son las 24:20:00,

ahora como le pueda hacer para sacar la diferencia de :


17:00:00 y 00:20:00 que sea = a 07:20:00


saludos..................
  #4 (permalink)  
Antiguo 09/05/2009, 09:53
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Diferencias entre horas

Zeptimo...
Por que no nos cuentas un poco lo que necesitas y para que lo necesitas.
Con que fin, requieres la diferencia de dos horas?
Requieres los datos en segundos o en formato hora,minuto,segundo?
Ya probaste la función timediff de mysql?

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 09/05/2009, 10:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Diferencias entre horas

incluyendo el campo de fecha, es decir, donde tienes la año, mes, día. Me explico: si tú restas a 2009-05-03 00:20:00 2009-05-92 17:00:00, obtendrás lo que quieres, pero creo que nunca de restar de manera absoluta 00:20:00 - 17:00:00. Por tanto, si tienes 00:20:00 procedente de cargar un dato fecha-hora en dos campos uno para fecha y otro para hora, tendrás que volver a reunirlos en la consulta para restar con ese formato, porque, 00:20:00 son sólo 20 minutos, lo mires como lo mires; sólo si tienes el día siguiente, más esos 20 minutos tienes esas 24:20:00, algo que nunca puede aplicarse a una fecha, sino a una suma de horas.
Responde a las preguntas de huesos, pues es importante saber para qué quieres esto y de dónde obtienes los datos; así podremos orientarte mejor.
  #6 (permalink)  
Antiguo 09/05/2009, 10:51
Avatar de Zeptimo  
Fecha de Ingreso: enero-2008
Mensajes: 269
Antigüedad: 16 años, 10 meses
Puntos: 1
De acuerdo Respuesta: Diferencias entre horas

Huesos
lo que quiero hacer es para optener las horas trabajadas si empezo a laborar alas 17:00 y termino a las 00:20 osea alas 24:20 del dia sig que me pongas las horas que trabajo a sea 7:20 horas trabajadas


si, ya he utilizado el timediff pero con lo que me acaba de explicar jurena creo que ya entendia un poco mejor


saludos.......................y muchas gracias a los dos.............
  #7 (permalink)  
Antiguo 09/05/2009, 10:56
Avatar de Zeptimo  
Fecha de Ingreso: enero-2008
Mensajes: 269
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Diferencias entre horas

Pero ahora como le indico que es del dia siguiente???

Si en la bd me marca que es del mismo dia
  #8 (permalink)  
Antiguo 09/05/2009, 11:21
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Diferencias entre horas

zeptimo... te recomiendo cambies el tipo de dato de las horas de time a timestamp.
De esta forma haciendo uso de timediff te retorna el resultado que quieres.

Te doy en un ejemplo a lo que me refiero y tu nos dirás si te sirve o no.

Código mysql:
Ver original
  1. mysql> create table fechas5(fecha1 timestamp,fecha2 timestamp);
  2. Query OK, 0 rows affected (0.01 sec)
  3.  
  4. mysql> insert into fechas5 values(now(),'2009-05-07 08:00:05');
  5. Query OK, 1 row affected (0.00 sec)
  6.  
  7. mysql> insert into fechas5 values(now(),'2009-05-09 08:00:05');
  8. Query OK, 1 row affected (0.00 sec)
  9.  
  10. mysql> select *from fechas5;
  11. +---------------------+---------------------+
  12. | fecha1              | fecha2              |
  13. +---------------------+---------------------+
  14. | 2009-05-09 12:19:24 | 2009-05-07 08:00:05 |
  15. | 2009-05-09 12:19:29 | 2009-05-09 08:00:05 |
  16. +---------------------+---------------------+
  17. 2 rows in set (0.00 sec)
  18.  
  19. mysql> select timediff(fecha1,fecha2) from fechas5;
  20. +-------------------------+
  21. | timediff(fecha1,fecha2) |
  22. +-------------------------+
  23. | 52:19:19                |
  24. | 04:19:24                |
  25. +-------------------------+
  26. 2 rows in set (0.00 sec)

Fijate en las fechas, una es dos días atrás, y cuenta bien las 52 horas que transcurren.
la otra, es de hoy mismo y transcurre 4 horas desde las 8 de la mañana.

De esta forma, no te preocupas si pasaron 1, 2 o n dias.
Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 11/05/2009, 08:54
Avatar de Zeptimo  
Fecha de Ingreso: enero-2008
Mensajes: 269
Antigüedad: 16 años, 10 meses
Puntos: 1
De acuerdo Respuesta: Diferencias entre horas

oie pero si el campo nada mas me muestra la hora como le puedo hacer????
  #10 (permalink)  
Antiguo 11/05/2009, 09:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Diferencias entre horas

Zeptimo,
ese campo te mostrará la hora, pero seguro que tienes otro con el día (año/mes/día). Si haces un CONCAT con ambos, e imagino que un CASTING a DATE podrás restar las fechas con el TIMEDIFF.
No lo he probado.
  #11 (permalink)  
Antiguo 11/05/2009, 09:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Diferencias entre horas

Si lo que quieres es que te devuelva un string del tipo "2 dias 00:00:00 hs.", o bien "2.00:00:00" partiendo de dos datetimes, hay una forma que tiene algo de complejidad:
Código SQL:
Ver original
  1. IF((TIMESTAMPDIFF(SECOND,FECHAINI,FECHAFIN) > 86400),
  2.     CONCAT((TIMESTAMPDIFF(SECOND,FECHAINI,FECHAFIN) DIV 86400),'.',
  3.       DATE_FORMAT(SEC_TO_TIME((TIMESTAMPDIFF(SECOND,FECHAINI,FECHAFIN) % 86400)),'%T')),
  4.     DATE_FORMAT(SEC_TO_TIME((TIMESTAMPDIFF(SECOND,FECHAINI,FECHAFIN) % 86400)),'%T')))
Esto crea un string del tipo "0.00:00:00" sin importar la diferencia de tiempo encontrada (puede funcionar incluso con meses). Lo que hace es hacer una división entera de la diferencia de segundos entre dos fechas determinadas por los segundos de un dia, y eso encadenarla con el resto de una división igual.
De esa forma una cantidad X de segundos se secciona en dos partes: la cantidad de días completos y el tiempo excedente de un día entero.
Es la forma más eficiente que he encontrado hasta ahora, que incluso puede operar en reportes de mucha complejidad sin reducir performance.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 11/05/2009, 10:19
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Diferencias entre horas

Gracias por compartir estas cosas con nosotros, gnzsoloyo.
  #13 (permalink)  
Antiguo 27/04/2010, 09:40
 
Fecha de Ingreso: octubre-2008
Mensajes: 22
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Diferencias entre horas

gracias huesos52
a mi me sirvio mucho

saludos
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 13:53.