Calcular total de horas trabajadas con SQL

03/12/2007 - 13:36 por Francisco J. Lopez | Informe spam
Buen día Amigos,

Tengo una tabla en una BD con la estructura y datos sgtes.:

Nombre Fecha Hora Evento
Juan 05/11/2007 07:00 Entrada
Juan 05/11/2007 12:00 Salida
Juan 05/11/2007 13:00 Entrada
Juan 05/11/2007 18:00 Salida
Juan 05/11/2007 21:00 Entrada
Juan 05/11/2007 23:30 Salida



Que es basicamente el registro del horario de entrada y salida de Juan a su
trabajo.

Mi pregunta es:
Se puede con SQL, de alguna forma, calcular la cantidad de horas trabajadas
por Juan el día 05/11/2007??

Saludos,

Francisco
 

Leer las respuestas

#1 Cristian Meneses
03/12/2007 - 13:51 | Informe spam
Hola Francisco
Yo lo he resuelto convirtiendo a segundos, y haciendolo negativo para
entradas y positivo para salidas, de tal forma que en la sumatoria de
los segundos totales.
DATEDIFF(s, CAST('00:00:00'AS datetime), CAST(Hora as datetime))

Luego solo debes convertir los segundos al formato horas, ahi va la
funcion

CREATE FUNCTION [dbo].[FormatHora]
(@Segundos float)
RETURNS varchar(50) AS
BEGIN
DECLARE @RES VARCHAR(50)
DECLARE @HORAS FLOAT
DECLARE @MINS FLOAT
DECLARE @SEGS FLOAT
DECLARE @RESTO FLOAT

SET @HORAS = @Segundos /60/60
SET @RESTO = @HORAS - FLOOR(@HORAS)
SET @HORAS = FLOOR(@HORAS)

SET @MINS = @RESTO * 60
SET @RESTO = @MINS - FLOOR(@MINS)
SET @MINS = FLOOR(@MINS)

SET @SEGS = @RESTO * 60

SET @RES = CAST(@HORAS as varchar) + ':' + right('00'+cast(@MINS as
varchar),2) + ':' + right('00'+cast(@segs as varchar),2)
RETURN @RES
END

Espero que te sirva, saludos


Cristian Meneses

Preguntas similares