在SQL中并没有提供返回指定年月获得天数的函数,但是我们可以借助SQL的两个系统函数(DataAdd,DataDiff)巧妙的进行构造快速得到.代码实现详看下文,
[海峡IT网原创]根据年月,计算出当月的天数的SQL自定义函数
/*
根据年月,计算出当月的天数
by airzen 20070626
www.haixiaIT.com
*/
Create FUNCTION dbo.f_GetMonthDays
(
@year int,
@month int
)
RETURNS int
AS
BEGIN
Declare @Ret_V int
Declare @tmpDate datetime
SET @tmpDate = Convert(datetime, Cast(@year as varchar(4)) + '-' + Cast(@month as varchar(2)) + '-01')
SET @Ret_V = DateDiff(dd,@tmpDate,DateAdd(mm,1,@tmpDate))
RETURN @Ret_V
END
下面说一下这个函数的原理,其实很简单,比如要计算1981年2月有多少天,先组合出一个字符串"1981-2-01",然后将其转换成一个datatime型数据赋给一临时日期变量@tmpDate ,再利用DateAdd函数以月为单位加1即得到,"1981-3-01",正好SQL有根据日期单位算时差的函数,下面我们就用DateDiff出场显灵通了,DateDiff(dd,@tmpDate,DateAdd(mm,1,@tmpDate)),那么算两个日期的天数就这样出来了,OK,原理就是这么简单,根本不用去考虑什么闺年以及正常跨月的情况了...调用简单,执行效率高,居家旅行必备之函数.
海峡IT网原创文章,转载请指明出处.谢谢!
发表于 @ 2008年06月06日 14:36:33|评论(loading...)|编辑|收藏