Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/07/2011, 18:05
lubtufano
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 13 años, 4 meses
Puntos: 72
Respuesta: Operacion campo Time

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 original
  1. SELECT @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 original
  1. SELECT @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 original
  1. SELECT @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 original
  1. SELECT 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.