Ver Mensaje Individual
  #11 (permalink)  
Antiguo 11/05/2009, 09:45
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
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)