CREATE FUNCTION [dbo].[HoraInicialint]
 
(   @HISAP2 nvarchar(10), 
    @HFSAP2 nvarchar(10),
    @FISAP DateTIME ,
    @FFSAP DATEtime 
     )
 
RETURNS nvarchar(10)
AS 
BEGIN
DECLARE @HIFF VARCHAR (10)
DECLARE @HFFF VARCHAR (10)
DECLARE @DifDIas nvarchar(10)
DECLARE @HP1 nvarchar (10)
DECLARE @HP2 nvarchar (10)
DECLARE @Salida nVarchar(20)
DECLARE @HISAPV VARCHAR (10)
DECLARE @HFSAPV VARCHAR (10)
DECLARE @HISAP INT
DECLARE @HFSAP INT
 
 
    --COnversiond e valores hora  a int ----------------------------------------------
    SET @HISAPV = CONVERT(FLOAT,@HISAP2 )
    SET @HFSAPV = CONVERT(FLOAT,@HFSAP2 )
    SET @HISAP = CONVERT(INT,@HISAPV)
    SET @HFSAP = CONVERT(INT,@HFSAPV)
    
    SET @HISAP2 = ISNULL(@HISAP2,01) 
    SET @HFSAP2 = ISNULL(@HFSAP2,01)
    SET @FISAP = ISNULL(@FISAP,0)
    SET @FFSAP = ISNULL(@FFSAP,0) 
    
    
    
    -- COnversion de hora inicial
    IF LEN(@HISAP) = 4 
    SET @HIFF =  CONVERT(Nvarchar,@HISAP)
 
    IF LEN(@HISAP) = 1
    SET @HIFF = ('000'+ CONVERT(Nvarchar,@HISAP))
 
    IF LEN(@HISAP) = 2
    SET @HIFF = ('00'+ CONVERT(Nvarchar,@HISAP))
 
    IF LEN(@HISAP) = 3
    SET @HIFF = ('0'+ CONVERT(Nvarchar,@HISAP))
 
    -- COnversion de hora FINAL
    IF LEN(@HFSAP) = 4
    SET @HFFF =  CONVERT(Nvarchar,@HFSAP)
 
    IF LEN(@HFSAP) = 1
    SET @HFFF = ('000'+ CONVERT(Nvarchar,@HFSAP))
 
    IF LEN(@HFSAP) = 2
    SET @HFFF = ('00'+ CONVERT(Nvarchar,@HFSAP))
 
    IF LEN(@HFSAP) = 3
    SET @HFFF = ('0'+ CONVERT(Nvarchar,@HFSAP))
    
    
    -- Conversion y calculo de horas ----------------------------------------
    
    
    IF DATEDIFF(DAY,@FISAP,@FFSAP) >=1
    BEGIN
        SET @DifDIas = ((DATEDIFF(DAY,@FISAP,@FFSAP)*2400) - @HISAP )  + @HFSAP  
            IF LEN(@DifDIas) = 1
                SET @DifDIas = ('000'+ CONVERT(Nvarchar,@DifDIas))
            IF LEN(@DifDIas) = 2
                SET @DifDIas = ('00'+ CONVERT(Nvarchar,@DifDIas))
            IF LEN(@DifDIas) = 3
                SET @DifDIas = ('0'+ CONVERT(Nvarchar,@DifDIas))            
            IF LEN(@DifDIas) = 4                                            
                SET @DifDIas =  CONVERT(Nvarchar,@DifDIas)                  
                SET @HP1 = LEFT(@DifDias,2)
            IF LEN(@DifDIas) = 5 
                SET @HP1 = LEFT(@DifDias,3)
            IF (@DifDIas > = 100 ) -- SI es mayor a una hora, se le suma el dia completo 
                BEGIN
                    SET @HP2 = RIGHT(@DifDias,2)
                    IF @HP2 > = 61
                    BEGIN
                        SET @HP2 = @HP2 -40
                        SET @Salida =   CONVERT(FLOAT,@HP1) + ROUND((CONVERT(FLOAT, @HP2))/60,2 ) 
                    END
                    IF @HP2 <= 60
                        SET @Salida =   CONVERT(FLOAT,@HP1) + ROUND((CONVERT(FLOAT, @HP2))/60,2 ) 
                        --Set @Salida =  @HP2--ROUND((CONVERT(FLOAT, @HP2))/60,2 )--@DifDIas--HP2
                END
            IF (@DifDIas < = 99 )-- si es menor de una hora, no toma en cuenta el dia que paso
                BEGIN
                    SET @HP2 = RIGHT(@DifDias,2)
                    SET @Salida =  ROUND((CONVERT(FLOAT, (@HP2-40)))/60,2 )
                END
                
    END
    IF  DATEDIFF(DAY,@FISAP,@FFSAP) = 0 --and  DATEDIFF(day,@FISAP,@FFSAP) >= 0
    BEGIN
        SET @DifDIas = (CONVERT(FLOAT,@HFSAP) - CONVERT(FLOAT,@HISAP))
        IF @DifDIas NOT LIKE '%-%'
            BEGIN
                IF LEN(@DifDIas) = 4
                    SET @DifDIas =  CONVERT(Nvarchar,@DifDIas)
                IF LEN(@DifDIas) = 1
                    SET @DifDIas = ('000'+ CONVERT(Nvarchar,@DifDIas))
                IF LEN(@DifDIas) = 2
                    SET @DifDIas = ('00'+ CONVERT(Nvarchar,@DifDIas))
                IF LEN(@DifDIas) = 3
                    SET @DifDIas = ('0'+ CONVERT(Nvarchar,@DifDIas)) 
            SET @HP1 = LEFT(@DifDias,2)
            SET @HP2 = RIGHT(@DifDias,2)
            IF @HP2 <= 60
                SET @Salida =  CONVERT(FLOAT,@HP1)+ ROUND((CONVERT(FLOAT, @HP2))/60,2 )-- 
            IF @HP2 >= 61
                BEGIN
                    SET @HP2 = @HP2 -40
                    SET @Salida = CONVERT(FLOAT,@HP1) + ROUND((CONVERT(FLOAT, @HP2))/60,2 )
                END
            END -- endIF @DifDIas NOT LIKE
    END
    
    
    
    IF DATEDIFF(DAY,@FISAP,@FFSAP) <=-1
    BEGIN
        SET @DifDIas = ((DATEDIFF(DAY,@FFSAP,@FISAP)*2400) -  @HFSAP )  +   @HISAP
            IF LEN(@DifDIas) = 1
                SET @DifDIas = ('000'+ CONVERT(Nvarchar,@DifDIas))
            IF LEN(@DifDIas) = 2
                SET @DifDIas = ('00'+ CONVERT(Nvarchar,@DifDIas))
            IF LEN(@DifDIas) = 3
                SET @DifDIas = ('0'+ CONVERT(Nvarchar,@DifDIas))            
            IF LEN(@DifDIas) = 4                                            
                SET @DifDIas =  CONVERT(Nvarchar,@DifDIas)                  
                SET @HP1 = LEFT(@DifDias,2)
            IF LEN(@DifDIas) = 5 
                SET @HP1 = LEFT(@DifDias,3)
            IF LEN(@DifDIas) = 6 
                SET @HP1 = LEFT(@DifDias,4)
            IF (@DifDIas > = 100 ) -- SI es mayor a una hora, se le suma el dia completo 
                BEGIN
                    SET @HP2 = RIGHT(@DifDias,2)
                    IF @HP2 > = 61
                    BEGIN
                        SET @HP2 = @HP2 -40
                        SET @Salida =   (CONVERT(FLOAT,@HP1) + ROUND((CONVERT(FLOAT, @HP2))/60,2 ) )*-1
                    END
                    IF @HP2 <= 60
                        SET @Salida =   (CONVERT(FLOAT,@HP1) + ROUND((CONVERT(FLOAT, @HP2))/60,2 ) )*-1
                        --Set @Salida =  @HP2--ROUND((CONVERT(FLOAT, @HP2))/60,2 )--@DifDIas--HP2
                END
            IF (@DifDIas < = 99 )-- si es menor de una hora, no toma en cuenta el dia que paso
                BEGIN
                    SET @HP2 = RIGHT(@DifDias,2)
                    SET @Salida = ( ROUND((CONVERT(FLOAT, (@HP2-40)))/60,2 ))*-1
                END
                
    END
RETURN @Salida
 END