La Web del Programador: Comunidad de Programadores
 
    Pregunta:  42455 - COMO HAGO OPERACIONES CON LA HORA
Autor:  hector P. R.
como puedo hacer operaciones con la hora
ejemplo una resta de 14:30 p. m. menos 12:25 p. m.
se puede hacer esta ejecucion?

  Respuesta:  Alejo Landini
hector:
tanto la fecha como la hora en el sistema son numericos del timpo single. basta con restar matematicamente
te doy un ejemplo que te calcula directamente en una consulta de access la diferencia horaria de dos campos con formato fecha y hora:

SELECT Tabla1.h1, Tabla1.h2, cdate( [h2]-[h1]) AS Resultado
FROM Tabla1;

la funcion cdate() lo unico que hace es darte el resultado con fromato de fecha y hora.
salu2

  Respuesta:  Fernando Serantes
Resta las horas sin inconvenientes utilizando variables, un campo de salida de una consulta o un form, por ej: tiempo: horafinal-horainicial . Access internamente utilizara la numeracion de la hora. Luego pudes utilizar las fumciones de hora, minuto y segundos para averiguar cuantas horas minutos o segundos le corresponden a esa resta. ej:

tiempo: horafinal-horainicial
horastiempo: hora(tiempo)
minutostiempo: minuto(tiempo)
segundostiempo: segundo(tiempo)

resultadofinal:
horastiempo & ":" & minutostiempo & ":" & segundostiempo

si sumas varias horas, minutos y segundos por separado
Es decir que usas 3 campos o variables horast; minutost y segundost por separado para calcular subtotales,
ej
HFinal HInicial Ht Mt St
13:29:55 - 12:10:40 1 19 15
14:31:40 - 13:42:40 0 49 00

acces te las sumara sin tener en cuenta que cada 60 seg debe contar 1 min, etc..

totales 1 68 15
ten en cuenta luego de dividirlas luego por 60 y trasladar su respectiva suma.

totales
hora: ent(Suma(Ht))+ ent(Suma(Mt)/60 )
minutos: ent(Suma(Mt))+ ent(Suma(St)/60 )
segundos: etc
la funcion final seria algo asi
THor: Ent((Suma([Hor]))+(Ent((Suma([Min]))/60)))
TMin: Ent(((((Suma([Min]))+(Ent(Suma([Seg])/60)))/60)-(Ent((((Suma([Min]))+(Ent(Suma([Seg])/60)))/60))))*60)
TSeg: Ent((Suma([Seg]))-(Ent(Suma([Seg])/60)*60))