Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/11/2008, 01:31
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: horaestimada y horareal

¿Por qué quieres usar timestampdiff? Piensa que el timestamp es una referencia en segundos usando como punto de partida 1970, 1 de enero... Si tú estás usando valores absolutos de time, es decir, horas, minutos y segundos, no tienes por qué añadir ahora la referencia de año, mes, dia para pasarlo todo a segundos. Si quieres utilizar segundos, utilízalos de forma absoluta:
esto también te valdría
Código sql:
Ver original
  1. SELECT horareal, horaestimada, SEC_TO_TIME(TIME_TO_SEC(horareal)-TIME_TO_SEC(horaestimada)) DIFERENCIA, CASE WHEN  (TIME_TO_SEC(horareal)-TIME_TO_SEC(horaestimada) BETWEEN -120 AND 120)
  2. THEN 'bien'
  3. WHEN (TIME_TO_SEC(horareal)-TIME_TO_SEC(horaestimada)) > 120
  4. THEN 'atrasado'
  5. WHEN (TIME_TO_SEC(horareal)-TIME_TO_SEC(horaestimada)) < -120
  6. THEN 'adelantado'
  7. END AS estimaci&#243;n
  8. FROM tabla ORDER BY TIME_TO_SEC(horareal)-TIME_TO_SEC(horaestimada)


De todas formas, comprueba tu versión de MySQL, pues algunas de estas funciones sólo pueden utilizarse con MySQL 5.0, otras a partir de 4.1, etc.

La explicación de por qué no te sale nada creo que sería la siguiente. Cuando tu haces select timestamp(horareal) from tutabla, observarás que te muestra la fecha hora así: 0000-00-00 14:02:00, por poner un ejemplo. Si intentas averiguar el UNIX_TIMESTAMP de esa fecha, te devuelve 0, pues el unix_timestamp comienza, como sabes en 1970, 1 de enero, 0 horas, 0 minutos, 0 segundos. El timestampdiff trabaja con ese rango de fechas. Podrías añadir una fecha cualquiera posterior o igual a 1970,1 de enero a tu time, es decir a tu hora, convertir en timestamp y luego obtener la diferencia usando timestampdiff, pero ¿merece la pena añadir un postizo para sacar el mismo resultado? Yo creo que no.
Lo mismo es que detrás de estas horas hay también fechas. Dinos si es así y cómo las tienes. Pero, aún en ese caso, habría que ver si merece la pena.

Última edición por jurena; 08/11/2008 a las 11:24