В SQL Server, используя CTE, я получаю последние четыре года, а по результатам четырех лет применяю расчет високосного года, чтобы получить последний високосный год.
Рабочий запрос:
;WITH Last4Years AS (
SELECT YEAR(GETDATE()) AS [YR]
UNION ALL
SELECT [YR] - 1
FROM Last4Years
WHERE [YR] - 1 >= YEAR(DATEADD(YEAR, -3, GETDATE()))
)
SELECT [YR] AS LeapYear FROM (
SELECT [YR],
CASE WHEN ([YR] % 4 = 0) AND ([YR] % 100 != 0) OR ([YR] % 400 = 0) THEN 1 ELSE 0 END AS Leap
FROM Last4Years
) L
WHERE Leap = 1;
Демонстрация на дб <> скрипка