判斷某年是否為閏年,常見誤區以為「能被 4 整除即是」,實則 1900 年即為反例。無需死記規則,直接利用 SQL Server 日期運算即可輕鬆搞定。
將輸入年份組合為「2 月 28 日」,再加一天:若結果仍在 2 月(月份 = 2),則該年為閏年(因 2 月有 29 日);否則為平年。
CREATE FUNCTION dbo.fn_IsLeapYear (@year INT)
RETURNS BIT
AS
BEGIN
RETURN (
SELECT CASE DATEPART(MM, DATEADD(DD, 1, CAST((CAST(@year AS VARCHAR(4)) + '0228') AS DATETIME)))
WHEN 2 THEN 1
ELSE 0
END
);
END;
GO
SELECT dbo.fn_IsLeapYear(1900) AS IsLeapYear; -- 0
SELECT dbo.fn_IsLeapYear(2000) AS IsLeapYear; -- 1
SELECT dbo.fn_IsLeapYear(2007) AS IsLeapYear; -- 0
SELECT dbo.fn_IsLeapYear(2008) AS IsLeapYear; -- 1

圖:函數執行結果
善用資料庫引擎內建日期運算,能以極簡代碼解決看似棘手的邏輯判斷。