Financial Year Diff

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[FN_YEARDIFF]
(@STD AS DATETIME,
@FND AS DATETIME)
RETURNS VARCHAR(16)
AS
BEGIN
            declare @SD     AS INT
            declare @SM    AS INT
            declare @SY     AS INT
            declare @FD     AS INT
            declare @FM     AS INT
            declare @FY     AS INT
            DECLARE @YVAR        AS INT
            DECLARE @MVAR       AS INT
            DECLARE @DIFF          AS VARCHAR(16)
            DECLARE @EM            AS INT
            DECLARE @DVAR        AS INT

            set @SD=DAY(@STD)
            set @SM=MONTH(@STD)
            set @SY=YEAR(@STD)
           
            set @FD=DAY(@FND)
            set @FM=MONTH(@FND)
            set @FY=YEAR(@FND)
           
            SET @YVAR = @FY - @SY
            select @EM=0

            IF @SY < @FY
            BEGIN
                        SET @YVAR = @YVAR - 1
                        SET @EM=12-@SM

                        SET @MVAR =@EM+@FM

                        IF @MVAR=12
                        BEGIN
                                    SET @DVAR = @FD - @SD
                                    IF @DVAR < 0
                                                SET @MVAR = @MVAR - 1
                                    ELSE
                                    BEGIN
                                                SET @YVAR=@YVAR+1
                                                SET @MVAR=@MVAR-12
                                    END
                        END
                        ELSE
                        BEGIN
                                    IF @MVAR>12
                                    BEGIN
                                                SET @YVAR=@YVAR+1
                                                SET @MVAR=@MVAR-12
                                               
                                                SET @DVAR = @FD - @SD
                                                IF @DVAR < 0
                                                            SET @MVAR = @MVAR - 1
                                    END
                                    ELSE
                                    BEGIN
                                                SET @DVAR = @FD - @SD
                                                IF @DVAR < 0
                                                            SET @MVAR = @MVAR - 1                  
                                    END
                        END
            END
            ELSE
            BEGIN
                        IF @SY=@FY
                        BEGIN

                                    SET @YVAR=0
                                    SET @MVAR=@FM-@SM
                                    SET @DVAR = @FD - @SD    
                                    IF @DVAR < 0
                                                SET @MVAR = @MVAR - 1
                        END
                        ELSE
                                    SELECT @YVAR=0,@MVAR=0
            END
DECLARE @MINYEAR DECIMAL (4,2)
--select right(cast(2.0/12.0 AS decimal(4,2)),2)
 IF @MVAR <> 0
SET @MINYEAR = @MVAR/12.0
 ELSE
SET @MINYEAR = @MVAR      

       SET @DIFF=CAST(@YVAR AS VARCHAR(4)) + '.' + right(CAST(@MINYEAR  AS VARCHAR(50)),2)
--            SELECT @DIFF
            RETURN (@DIFF)
END

Comments

Popular posts from this blog

Who Deleted and Drop the record in table

Generate Password

Key Board Shortcuts