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
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
Post a Comment