Tema: Sumar Horas
Ver Mensaje Individual
  #8  
Antiguo 26-01-2008
Avatar de BuenaOnda
BuenaOnda BuenaOnda is offline
Miembro
 
Registrado: feb 2006
Ubicación: La Serena - Chile
Posts: 347
Reputación: 19
BuenaOnda Va por buen camino
Thumbs up Solucionado..

solucione mi problema. converti todo a segundos y luego formatee la hora de la siguiente manera.

funcion.
Código SQL [-]
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) 
        --LISTO HORAS 
        SET @HORAS = FLOOR(@HORAS) 

        SET @MINS = @RESTO * 60 
        SET @RESTO = @MINS - FLOOR(@MINS) 
        --LISTO 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

Utilizando la conulta anterior..
Código SQL [-]
Declare @Fecha as smalldatetime
Declare @FechaM as smalldatetime
--Sacamos la Maxima Fecha Actual...
  Set @Fecha=(Select Max(FechaControl)
                From Control)    
--Obtenemos la Fecha de 4 meses Atraz...     
  Set @FechaM=(DATEADD(mm, -4, @Fecha) ) 
Select Tiempo.div,Tiempo.DivName,Semana=dbo.ft_ieo_ObtenerSemana(Tiempo.FechaControl),
       Times=dbo.FormatHora( SUM(DATEDIFF(s, CAST('00:00:00'AS datetime), CAST(Tiempo.TCD as datetime)))) , 
       Anio=0
  From(Select a1.div,DivName=Case a1.div When 42 Then 'MENDOZA'
                                         When 43 Then 'CORDOVA'     
                                         When 44 Then 'BUENOS AIRES' End,    
              A1.LocName as Origen, A.LocOrigen,A2.LocName as Destino, A.LocDestino,A.HrEntrada,A.HrSalida,A.FechaControl ,
              TCD=cast( (A.HrSalida - A.HrEntrada) as datetime)--,
              --TCD=left(convert(varchar,(A.HrSalida - A.HrEntrada), 108), 8)
         From Control A
        Inner Join LocNames  As A1
           On A1.Loc=A.LocOrigen 
        Inner Join LocNames  As A2
           On A2.Loc=A.LocDestino
        Where A.FechaControl >=@FechaM) Tiempo 
  Group By Tiempo.div,Tiempo.DivName,dbo.ft_ieo_ObtenerSemana(Tiempo.FechaControl)

muchas gracias por su ayuda..
Responder Con Cita