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

horaestimada y horareal

Estas en el tema de horaestimada y horareal en el foro de Mysql en Foros del Web. tengo un problema tengo dos campos uno es la horaestimada y otro hora real.. Me pidieron sacar un nivel de tolereancia de 2 minutos para ...
  #1 (permalink)  
Antiguo 07/11/2008, 09:55
Avatar de Zeptimo  
Fecha de Ingreso: enero-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 1
De acuerdo horaestimada y horareal

tengo un problema


tengo dos campos uno es la horaestimada y otro hora real..

Me pidieron sacar un nivel de tolereancia de 2 minutos para poner un estatus de 'atrasado','adelantado' y 'a tiempo'

por ejemplo
hora estimada 6:00 horaReal 6:02 tolerancia que son 2 minutos 6:02 = 'bien'

hora estimada 6:00 horaReal 6:03 tolerancia que son 2 minutos 6:03= 'atrasado'

hora estimada 6:00 horaReal 5:58 tolerancia que son 2 minutos 5:58= 'bien

hora estimada 6:00 horaReal 5:57 tolerancia que son 2 minutos 5:57= 'Adelantado'


hora estimada 6:00 horaReal 6:05 tolerancia que son 2 minutos 6:0 = 'bien
  #2 (permalink)  
Antiguo 07/11/2008, 12:03
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

prueba con esto:
Código sql:
Ver original
  1. SELECT horareal, horaestimada, timediff( horareal, horaestimada ) AS diferencia,
  2. CASE WHEN MINUTE( timediff( horareal, horaestimada ) ) <3
  3. THEN 'bien'
  4. WHEN timediff( horareal, horaestimada ) > '00:02:00'
  5. THEN 'atrasado'
  6. WHEN timediff( horareal, horaestimada ) > '-00:02:00'
  7. THEN 'adelantado'
  8. END AS estimaci&#243;n
  9. FROM tabla
  #3 (permalink)  
Antiguo 07/11/2008, 14:56
Avatar de Zeptimo  
Fecha de Ingreso: enero-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: horaestimada y horareal

Esta bien el ejemplo que escribiste pero cambie el de timesdiff

por el de timesampdiff

pero en diferencai y estimacion no envia nada alguna idea de que es lo que pasa???
  #4 (permalink)  
Antiguo 08/11/2008, 01:31
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
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 07:09.