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+----------+-------------------+
| id_tabla | hora |
+----------+-------------------+
| 1 | 3611-201603230700 |
| 2 | 5071-201603221940 |
| 3 | 814-201603212000 |
+----------+-------------------+
-> id_tabla,
-> hora,
-> SUBSTR
(hora
, LENGTH(hora
) - 3, 4) hora_varchar
+----------+-------------------+--------------+
| id_tabla | hora | hora_varchar |
+----------+-------------------+--------------+
| 1 | 3611-201603230700 | 0700 |
| 2 | 5071-201603221940 | 1940 |
| 3 | 814-201603212000 | 2000 |
+----------+-------------------+--------------+
Ahora si, puedes convertir estos cuatro caracteres a tipo TIME o DATETIME:
Código MySQL:
Ver original -> id_tabla,
-> hora,
-> SUBSTR
(hora
, LENGTH(hora
) - 3, 4) hora_varchar
, +----------+-------------------+--------------+-----------+
| id_tabla | hora | hora_varchar | hora_time |
+----------+-------------------+--------------+-----------+
| 1 | 3611-201603230700 | 0700 | 07:00:00 |
| 2 | 5071-201603221940 | 1940 | 19:40:00 |
| 3 | 814-201603212000 | 2000 | 20:00:00 |
+----------+-------------------+--------------+-----------+
Entonces si, con el dato ya como TIME o DATETIME puedes hacer las agrupaciones y comparaciones que quieras.
Saludos
Leo.