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

Obtener Diferencia de Horas MySQL

Estas en el tema de Obtener Diferencia de Horas MySQL en el foro de Mysql en Foros del Web. Buenos dias, estoy trabajando sobre una web jsp con una bd en MySQL, estoy utilizando el Xampp 1.7.3, y pues ahora me ha resultado un ...
  #1 (permalink)  
Antiguo 24/08/2011, 10:43
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 14 años, 3 meses
Puntos: 0
Pregunta Obtener Diferencia de Horas MySQL

Buenos dias, estoy trabajando sobre una web jsp con una bd en MySQL, estoy utilizando el Xampp 1.7.3, y pues ahora me ha resultado un problema que no entiendo como resolverlo y pido de su ayuda...


El caso es que tengo en mi BD una vista llamada ''Reporte" en donde tengo campos de otras dos tablas incluidas en la BD, en la vista Reporte tengo dos campos de tipo TIME, h_inicio y h_fin para la hora de inicio y la hora de fin respectivamente, entonces al crear la vista necesito obtener las horas programadas para cada persona, esto si lo puedo sacar como deseo, en un entero, restando la hora de fin menos la de inicio asi: (h_fin - h_inicio) AS programadas, como ejemplo (08:00:00 - 07:00:00) AS programadas, lo que me da un valor de "1" porque es una hora...

El problema viene cuando quiero sacar el tiempo que ha estado dentro la persona, dependiendo de la hora en la que se registro y de la hora que tiene asignado, osea si su horario es h_inicio = 07:00:00 y la h_fin = 08:00:00 y el se registro a las 07:20:00 la diferencia deberia ser de 40 minutos (00:40:00) pero no se como obtener los 40 minutos, ya que si resto la hora de fin menos la hora de registro me obtiene un valor entero con decimal, en este caso me obtendria 0.8 lo cual no me sirve, porque no me muestra cuanto tiempo en minutos fue...

¿alguna sugerencia?

este es el codigo de mi vista:

CREATE VIEW Reporte AS SELECT L.nombre, L.edificio, H.id_lab, R.fecha, R.h_reg, H.h_inicio, H.h_fin, (H.h_fin - H.h_inicio)/10000 AS Programadas, (H.h_fin - R.h_reg)/10000 AS Usadas
FROM horario_lab H LEFT JOIN registro R ON
R.id_lab = H.id_lab AND R.id_prof = H.id_prof JOIN laboratorios L ON L.id_lab = H.id_lab


donde las horas programadas me aparecen como un entero dependiendo cuantas horas tenga asignadas, pero en las usadas me sale con decimales....
  #2 (permalink)  
Antiguo 25/08/2011, 01:18
Avatar de GianinoC  
Fecha de Ingreso: abril-2011
Mensajes: 17
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Obtener Diferencia de Horas MySQL

Hola,

No entendí bien como quisieras que te devuelva el valor de las horas usadas si en minutos '40' o '00:40:00' etc.

Yo estoy usando los campos en tipo datetime ya que no sabía en que contexto se iba a usar la Query.

Para obetener lo minutos entre dos fechas:
Código:
SELECT TIMESTAMPDIFF(MINUTE , h.h_inicio, h.h_fin ) AS diferencia FROM tu_tabla h
y para obtenerlos en formato '00:40:00':
Código:

SELECT SEC_TO_TIME((TIMESTAMPDIFF(MINUTE , h.h_inicio, h.h_fin ))*60) AS diferencia FROM tu_tabla h
Espero que lo puedas aplicar a tu lógica y haya respondido tu pregunta, si no especifícame un poco más y respondo apenas pueda.
  #3 (permalink)  
Antiguo 25/08/2011, 16:10
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Obtener Diferencia de Horas MySQL

OK!!

Muchas gracias por tu respuesta GianinoC, había encontrado por algún lugar que podía usar el TIMEDIFF pero no entendía muy bien como usarlo, de la manera en que lo encontré, no imagine que fuese tan fácil de usar, debí imaginarlo °-° mmm pero claro que me sirvió tu respuesta, gracias por tu ayuda, ahora ya puedo obtener la diferencia de las horas de ejemplo 08:00:00 - 07:00:00 en 00:40:00 y no 0.8 :D

Aunque de las formas que me sugieres, si las ejecuto me arroja solo nulos, no se porque, a parte la diferencia la quiero en un campo en la misma tabla/vista en donde tengo la hora de inicio de fin y la de registro, entonces no aplica creo yo, pero = me sirvió tu respuesta para entender como funciona el TIMEDIFF, lo hice de esta forma mas o menos:

TIMEDIFF(H.h_fin,H.h_inicio) AS Programadas, TIMEDIFF(H.h_fin, R.h_reg) AS Usadas
FROM horario_lab H, Registro R

Gracias, debería haber en este foro mas personas que ofrezcan ayuda como tu, muchas veces e preguntado y nadie me contesta, pareciera que los foros de ayuda están perdiendo su razón de ser, y es una lastima... muchas gracias por tu tiempo, nos vemos (Y)

Gracias

Etiquetas: campos, diferencia, horas, join, select, sql, tabla
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 00:19.