怎么利用sql查询一个时间段内年数?
要求:1、要判断这个时间段内的闰年
2.最后结果应该是一个小数类型的
declare @sdate datetime
declare @edate datetime
set @sdate = '2000-10-15'
set @edate = '2009-02-10'
select
year(dateadd(yy,num,@sdate)) dt ,
case when (year(dateadd(yy,num,@sdate)) % 400 = 0) or
(year(dateadd(yy,num,@sdate)) % 4 = 0 and year(dateadd(yy,num,@sdate)) % 100 <> 0)
then '润年' else '非润年' end [润年/非润年]
from
(select isnull((select count(1) from sysobjects where id<t.id),0) as num from sysobjects t) a
where
year(dateadd(yy,num,@sdate))<=year(@edate)
/*
dt 润年/非润年
----------- ------
2000 润年
2001 非润年
2002 非润年
2003 非润年
2004 润年
2005 非润年
2006 非润年
2007 非润年
2008 润年
2009 非润年
(所影响的行数为 10 行)
*/
在公历(格里历)纪年中,有闰日的年份叫闰年,一般年份365天,闰年为366天。由于地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年,公历把一年定为365天。所余下的时间约为四年累计一天,加在二月里,所以平常年份每年365天,二月为28天,闰年为366天,二月为29天。因此,每400年中有97个闰年,闰年在2月末增加一天,闰年366天。 闰年的计算方法:公元纪年的年数可以被四整除,即为闰年;被100整除而不能被400整除为平年;被100整除也可被400整除的为闰年。如2000年是闰年,而1900年不是。
在公历(格里历)纪年中,有闰日的年份叫闰年,一般年份365天,闰年为366天。由于地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年,公历把一年定为365天。所余下的时间约为四年累计一天,加在二月里,所以平常年份每年365天,二月为28天,闰年为366天,二月为29天。因此,每400年中有97个闰年,闰年在2月末增加一天,闰年366天。 闰年的计算方法:公元纪年的年数可以被四整除,即为闰年;被100整除而不能被400整除为平年;被100整除也可被400整除的为闰年。如2000年是闰年,而1900年不是。