hi, try this...
CREATE FUNCTION fnLastLeapYear
(
@Year INT = 0
)
RETURNS INT
AS
BEGIN
DECLARE @LastLeapYear int = 0
;WITH LastLeapYear([year], Found) as
(
SELECT
@Year [year]
, CASE
WHEN datepart (DAY, dateadd(DAY, -1, dateadd(MONTH, 1, convert(DATETIME, convert(VARCHAR, @Year) + '-02-01')))) = 29 THEN
'y'
ELSE
'n'
END AS Found
UNION ALL
SELECT
[year] - 1 AS [year]
, CASE
WHEN datepart (DAY, dateadd(DAY, -1, dateadd(MONTH, 1, convert(DATETIME, convert(VARCHAR, [year] - 1) + '-02-01')))) = 29 THEN
'y'
ELSE
'n'
END AS Found
FROM
LastLeapYear
WHERE
Found = 'n'
)
SELECT @LastLeapYear = [year] FROM LastLeapYear WHERE Found = 'y'
Return @LastLeapYear;
END
call function
SELECT dbo.fnLastLeapYear(1995)
Happy Coding!
:)