是的,要確定某一年是否是閏年是有一些方法的。舉例來說,與現在流行想法相反的,不是所有能夠被4整除的年份都是閏年。例如,1900年就不是閏年。不過你不需要煩惱於閏年的規則。你可以讓SQL Server引擎來做這個工作!
下面的函數輸入一個年份會返回位比特標識來顯示輸入的年份是否是閏年。
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
這是全部的代碼!這個函數輸入參數為年份,對它附加上“0228”(代表2月28日)並增加一天。如果第二天的月份是一個2(DATEPART函數所提取的),那麼我們就是還在2月份,所以它肯定是一個閏年!如果不是,那麼它就不是閏年。
下面是一些示例:
select dbo.fn_IsLeapYear(1900) as 'IsLeapYear?'
select dbo.fn_IsLeapYear(2000) as 'IsLeapYear?'
select dbo.fn_IsLeapYear(2007) as 'IsLeapYear?'
select dbo.fn_IsLeapYear(2008) as 'IsLeapYear?'
圖1
正如你所看到的,有時你可以利用SQL Server引擎來為你做些麻煩的工作!