Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Operacion campo Time

Estas en el tema de Operacion campo Time en el foro de Mysql en Foros del Web. Un saludo primero que nada, espero puedan ayudarme: Tengo 2 campos Time uno que se llama entrada, otro salida y otro descuento. ¿Cómo puedo hacer ...
  #1 (permalink)  
Antiguo 25/07/2011, 14:21
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Operacion campo Time

Un saludo primero que nada, espero puedan ayudarme:

Tengo 2 campos Time uno que se llama entrada, otro salida y otro descuento.

¿Cómo puedo hacer la operación de resta salida - entrada - descuento?.

Teniendo en cuenta que el campo descuento es de tipo entero y se representa en minutos.

La operación de salida menos entrada me sale bien con TIMEDIFF(salida-entrada) y me lo da en formato HH:MM:SS pero cuando quiero restarle el campo descuento me lo da en horas enteras, quiciera que me apareciera en HH:MM:SS, ejemplo Entrada:08:00:00, salida 23:00:00, descuento: 3

TIME_FORMAT(TIMEDIFF(salida,entrada), '%T') = 16:00:00

(TIME_FORMAT(TIMEDIFF(salida,entrada), '%T') - descuento) = 13

es como si los minutos me los toma como horas y se los resta al 16 ademas que me le cambia el formato, ¿cómo puedo solucionarlo?. De antemano muchas gracias.

  #2 (permalink)  
Antiguo 25/07/2011, 15:04
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Operacion campo Time

No entendí mucho, pero mira las funciones de mysql time_to_sec(hora) y sec_to_time(segundos).

te puden ayudar

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 25/07/2011, 18:05
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 12 años, 8 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.
  #4 (permalink)  
Antiguo 25/07/2011, 18:25
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Operacion campo Time

Muchas gracias por tu respuesta, intentaré hacerla desde una sola consulta porque no solo es un registro sino muchos registros pero de igual forma muchas gracias, le intentaré a ver que tal me va.

Saludos
  #5 (permalink)  
Antiguo 26/07/2011, 07:50
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Operacion campo Time

Sigo sin poder hacer la operación, la solución que me dieron funciona pero tras varias querys, quiero hacerlo en una sola, help me! :s.

Saludos.
  #6 (permalink)  
Antiguo 26/07/2011, 08:12
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Operacion campo Time

Bueno despues de buscarle un rato dentro de las funciones de MySQL por fin puede, aquí les dejo la Consulta a ver si alguien más le sirve de algo.

SELECT entrada, salida, SUBTIME( TIMEDIFF(salida,entrada) , SEC_TO_TIME(descuento*60) ) AS diferencia FROM tiempos

Saludos y gracias. :)

Etiquetas: campos, operacion, time
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:36.