Ausencio:
Tu solución es la función SECONDS(), echale una mirada.
La función SECONDS() te devuelve la cantidad de segundos que han transcurrido desde la media noche hasta el momento en que ejecutas la función, en formato de 24 horas, por lo tanto el rango es de 0 hasta 86399.
Veamos un ejemplo, supongamos que un empleado entra a trabajar a las 10:00 AM y sale a las 11:10 AM.
En el momento que ingresa a trabajar se toma la lectura del reloj con la función SECONDS()
nSecEnt := SECONDS()
y se almacena en algun archivo, ahora al salir volvemos a tomar la lectura
nSecSal := SECONDS()
Si consideramos que 60 segundos forman un minuto y que 60 minutos forman una hora, entonces 60 segundos por 60 minutos son 3600 segundos en una hora, de acuerdo ?
Tomando en cuenta lo anterior podemos determinar que en la variable de entrada (nSecEnt) hay 36000 segundos, 3600 segundos por una hora y el entró a las 10 horas entonces 3600 por 10 = 36000, y en la variable de salida (nSecSal) hay 40200 segundos, 3600 segundos en una hora y el salio a las 11 (faltan los minutos) 3600 por 11 = 39600 + 60 segundo por minuto por 10 minutos despues de las 11 es igual a 600 entonces los segundos de la hora de salida son 40200 (39600 + 600).
Por último haciendo una resta obetenemos los segundos que el empleado permaneció en el trabajo 40200 menos 36000 = a 4200 segundos, ahora convertimos los segundos en horas minutos y segundos,
4200 entre 3600 segundos de una hora = 1 hora y sobran 600 segundos
600 entre 60 segundos de un minuto = 10 minutos, por lo tanto en empleado trabajó 1 hora con 10 minutos.
Sencillo verdad ?
El Duro