Un saludo, la verdad soy nuevo en esto, con todo se me ha ocurrido una solución al problema, solo que es muy poco elegante, esta basada en el uso de variables de usuario, funciones de fecha y hora y funciones de cadenas caracteres, como sabemos los tipos de dato TIME, DATE, DATETIME, etc. son cadenas de caracteres. Bueno la cosa es asi:
1. Se restan los datos TIME correspondientes y se guarda el resultado en una variable.
Código SQL:
Ver originalSELECT @temp:=timediff('18:45:00', '07:30:00');
Esto nos da como resultado
11:15:00
2. Con la función concat() se une el resultado a una fecha cualquiera guardando el resultado en una variable.
Código SQL:
Ver originalSELECT @temp:=concat('2000-01-01', ' ', @temp);
De lo que resulta
2000-01-01 11:15:00
3. Usando la función date_sub(
date, interval
expr type) se resta el último dato (descuento) indicando que se trata de minutos y claro se guarda el resultado en una variable.
Código SQL:
Ver originalSELECT @temp:=date_sub(@temp, INTERVAL 20 MINUTE);
El resultado es
2000-01-01 10:55:00
4. Finalmente se reemplaza la fecha por una cadena vacia con la funcion replace().
Código SQL:
Ver originalSELECT REPLACE(@temp, '2000-01-01', '');
Con esto obtenemos
10:55:00
Esto es la hora con el formato deseado. Como mencione es una solución nada ortodoxa. Eso es todo, gracias.