Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/05/2010, 09:55
chelodelsur
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Linea de Tiempo

Hola xixns:

Yo tenía el mismo problema con una central, con la diferencia que en mi caso hace un registro cada 15 minutos, y si en una rango no hay llamadas, no escribe el registro, o sea por ejemplo si entre las 3:00 y las 3:15 no hay llamadas no hace el registro de las 3:15.

La solución fue crear dos tablas: fecha, y Hora, para cruzarlas con la tabla de registro de tráfico.
Te dejo la consulta con la que hago el reporte, me lista todos los periodos cada 15 minutos entre las fechas declaradas en el Where.

Si quieres tener registro por un periodo distinto de tiempo, tendrías que adecuar las tabla horas a tus necesidades.

Espero te sirva de orientación.

Código MySQL:
Ver original
  1. YEAR(b.`HORARIO`) AS `AÑO`,    
  2. WHEN MONTH(b.`HORARIO`) = 1 THEN "enero"  
  3. WHEN MONTH(b.`HORARIO`) = 2 THEN "febrero"
  4. WHEN MONTH(b.`HORARIO`) = 3 THEN "marzo"  
  5. WHEN MONTH(b.`HORARIO`) = 4 THEN "abril"  
  6. WHEN MONTH(b.`HORARIO`) = 5 THEN "mayo"  
  7. WHEN MONTH(b.`HORARIO`) = 6 THEN "junio"  
  8. WHEN MONTH(b.`HORARIO`) = 7 THEN "julio"  
  9. WHEN MONTH(b.`HORARIO`) = 8 THEN "agosto"  
  10. WHEN MONTH(b.`HORARIO`) = 9 THEN "septiembre"  
  11. WHEN MONTH(b.`HORARIO`) = 10 THEN "octubre"  
  12. WHEN MONTH(b.`HORARIO`) = 11 THEN "noviembre"  
  13. WHEN MONTH(b.`HORARIO`) = 12 THEN "diciembre"  
  14. ELSE "NUUL_MES" END)  AS MES ,    
  15.    WHEN WEEKDAY(b.`HORARIO`) = 0 THEN "Lunes"
  16.    WHEN WEEKDAY(b.`HORARIO`) = 1 THEN "Martes"
  17.    WHEN WEEKDAY(b.`HORARIO`) = 2 THEN "Miercoles"
  18.    WHEN WEEKDAY(b.`HORARIO`) = 3 THEN "Jueves"
  19.    WHEN WEEKDAY(b.`HORARIO`) = 4 THEN "Viernes"
  20.    WHEN WEEKDAY(b.`HORARIO`) = 5 THEN "Sabado"
  21.    WHEN WEEKDAY(b.`HORARIO`) = 6 THEN "Domingo"
  22.    ELSE "NUUL_DIA" END) AS `DIA`,
  23. DATE_FORMAT(b.`HORARIO`,'%Y-%m-%d') AS FECHA,
  24. HOUR(b.`HORARIO`) AS HORA,
  25. TIME_FORMAT(b.`HORARIO`,'%H:%i:%s') AS CUARTOHORA,
  26. SUM(IFNULL(a.RECIBIDO,'0')) recibido
  27.        CONCAT(f.fecha_maestra,' ',h.hora_cuarto_maestra) `HORARIO`
  28.        FROM fecha f, Hora h ) b
  29. LEFT JOIN trafico_registro_15_minutos a      
  30. ON   b.`HORARIO`= a.fecha_date  
  31. WHERE b.`HORARIO` BETWEEN '2009-03-01 00:00:00' AND '2009-03-03 23:59:00'
  32. GROUP BY b.`HORARIO`
  33. ORDER BY b.`HORARIO` ASC;

PD: La tabla Fecha, lista las fechas, para mi caso tengo cargado todas las fechas desde 2009-01-01 al 2012-12-31.
La tabla Hora: tiene un campo en el que estan todos los cuartos de hora del día: 00:15, 00:30, 00:45, etc.