原创 [原创]根据年月,计算出当月的天数的SQL自定义函数收藏

 | 旧一篇: [原创]年份/月份是否在两个日期之间的SQL自定义函数

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...)|编辑|

 | 旧一篇: [原创]年份/月份是否在两个日期之间的SQL自定义函数

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © airzen