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

calcular tiempo Hora inicio-Hora Final

Estas en el tema de calcular tiempo Hora inicio-Hora Final en el foro de Bases de Datos General en Foros del Web. Buenas tardes, Estoy haciendo una base de datos en la que tengo que incluir datos de los trabajos que se realizan en un almacén. Tengo ...
  #1 (permalink)  
Antiguo 02/07/2011, 13:43
 
Fecha de Ingreso: mayo-2008
Mensajes: 25
Antigüedad: 16 años
Puntos: 0
calcular tiempo Hora inicio-Hora Final

Buenas tardes,
Estoy haciendo una base de datos en la que tengo que incluir datos de los trabajos que se realizan en un almacén.
Tengo dos tablas, empleados y tiempo. En la tabla tiempo tengo los campos fecha, hora inicio y hora final.
Lo que quisiera hacer es que, o bien en una consulta o en la misma tabla, tener un campo que me indique el total de horas utilizadas en una tarea.
Ejemp.
Hora Inicio – 14:00 hrs
Hora Final – 18:00 hrs
Horas empleadas 4 Hrs.
Esto lo he conseguido en un informe, pero no me vale por qué no he podido calcular un total.
E leído que la función datediff lo consigue, pero no he podido ponerla en ningún sitio.
No sé si me he explicado bien, espero me puedan ayudar.

Muchas gracias
  #2 (permalink)  
Antiguo 02/07/2011, 14:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: calcular tiempo Hora inicio-Hora Final

¿Y con qué DBMS estás trabajando?
Mira que hay diferencias enrte las funciones que usas en los diferentes DBMS disponibles.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 04/07/2011, 23:43
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Respuesta: calcular tiempo Hora inicio-Hora Final

Yo no he usado el datediff, pero se que se puede usar, yo regularmente uso esta funcion con Visual Basic (debes enviarle en formato 00:00:00



Public Function Lapsus(hora1, hora2)
'-----------------------------------------
' Funcion para sacar la diferencia de tiempos entre 2 horas
'-----------------------------------------
hora1 = Trim(hora1)
hora2 = Trim(hora2)
If hora1 = "" Or hora2 = "" Then
Lapsus = ""
Exit Function
End If
If Len(hora1) < 4 Or Len(hora2) < 4 Then
Lapsus = ""
Exit Function
End If

' a) Recuperamos la hora
tmp_HI = Hour(Left(hora1, 8))
tmp_HF = Hour(Left(hora2, 8))
' b) Recuperamos los minutos
tmp_mI = Minute(Left(hora1, 8))
tmp_mF = Minute(Left(hora2, 8))
' c) Recuperamos los segundos
tmp_sI = Second(Left(hora1, 8))
tmp_sF = Second(Left(hora2, 8))
' d) Rccuperamos las centesimoas/milesimas
If Len(hora1) > 8 And Len(hora2) > 8 Then
' Agrega ceros por si viene en centesimas no milesimas
tmp_dI = Int(Mid(hora1 & "000", 10, 3))
tmp_dF = Int(Mid(hora2 & "000", 10, 3))
End If

'e) Obtiene diferencias
tmp_hd = tmp_HF - tmp_HI
tmp_md = tmp_mF - tmp_mI
tmp_z = tmp_sF - tmp_sI
tmp_dd = tmp_dF - tmp_dI

' Para resultados negativos en Centesimas o milesimas
If tmp_dd < 0 And (tmp_sF > tmp_sI Or tmp_mF > tmp_mI Or tmp_HF > tmp_HI) Then
tmp_dd = (1000 + tmp_dF) - tmp_dI
tmp_z = tmp_z - 1
End If
'*** falto algo aqui
' Para resultados negativos en Segundos
If tmp_z < 0 And (tmp_mF > tmp_mI Or tmp_HF > tmp_HI) Then
tmp_z = tmp_z + 60
tmp_md = tmp_md - 1
End If
' Para resultados negativos en MInutos
If tmp_md < 0 And tmp_HF > tmp_HI Then
tmp_md = tmp_md + 60
tmp_hd = tmp_hd - 1
End If
' Para resultados negativos en horas
If tmp_hd < 0 Then
tmp_hd = tmp_hd * (-1)
End If

Lapsus = Right("00" & tmp_hd, 2) & ":" & Right("0" & tmp_md, 2) & ":" & Right("00" & tmp_z, 2) & "." & Right("000" & tmp_dd, 3)
End Function
  #4 (permalink)  
Antiguo 05/07/2011, 08:42
 
Fecha de Ingreso: mayo-2008
Mensajes: 25
Antigüedad: 16 años
Puntos: 0
Respuesta: calcular tiempo Hora inicio-Hora Final

Muchas gracias por vuestro trabajo. Al final lo e podido solucionar poniendo esto en una consulta
[Hora Final]-[Hora Inicio]

Asi me funciona. Muchas gracias. se aprende un monton aqui.........

Etiquetas: access, bases-de-datos
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 06:03.