Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/03/2016, 08:57
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Sumar ventas por cada intervalo de tiempo

Hola de nuevo agustinpak:

Puedes utilizar el campo varchar para extraer la hora, sin embargo, puede haber casos en que la cadena no tenga el formato especificado y tengas errores de conversión que debes manejar por separado. Para este ejemplo voy a suponer que los últimos 4 caracteres corresponden a la hora y minuto. Lo primero que tienes que hacer es extraer estos caracteres, esto lo haces con SUBSTR:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +----------+-------------------+
  3. | id_tabla | hora              |
  4. +----------+-------------------+
  5. |        1 | 3611-201603230700 |
  6. |        2 | 5071-201603221940 |
  7. |        3 | 814-201603212000  |
  8. +----------+-------------------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. mysql> SELECT
  12.     ->    id_tabla,
  13.     ->    hora,
  14.     ->    SUBSTR(hora, LENGTH(hora) - 3, 4) hora_varchar
  15.     -> FROM tabla;
  16. +----------+-------------------+--------------+
  17. | id_tabla | hora              | hora_varchar |
  18. +----------+-------------------+--------------+
  19. |        1 | 3611-201603230700 | 0700         |
  20. |        2 | 5071-201603221940 | 1940         |
  21. |        3 | 814-201603212000  | 2000         |
  22. +----------+-------------------+--------------+
  23. 3 rows in set (0.00 sec)

Ahora si, puedes convertir estos cuatro caracteres a tipo TIME o DATETIME:

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->    id_tabla,
  3.     ->    hora,
  4.     ->    SUBSTR(hora, LENGTH(hora) - 3, 4) hora_varchar,
  5.     ->    STR_TO_DATE(SUBSTR(hora, LENGTH(hora) - 3, 4), '%H%i') hora_time
  6.     -> FROM tabla;
  7. +----------+-------------------+--------------+-----------+
  8. | id_tabla | hora              | hora_varchar | hora_time |
  9. +----------+-------------------+--------------+-----------+
  10. |        1 | 3611-201603230700 | 0700         | 07:00:00  |
  11. |        2 | 5071-201603221940 | 1940         | 19:40:00  |
  12. |        3 | 814-201603212000  | 2000         | 20:00:00  |
  13. +----------+-------------------+--------------+-----------+
  14. 3 rows in set (0.00 sec)

Entonces si, con el dato ya como TIME o DATETIME puedes hacer las agrupaciones y comparaciones que quieras.

Saludos
Leo.