根据年月计算当月天数的SQL函数
2012-11-14 17:13
309 查看
根据年月,计算出当月的天数的SQL自定义函数
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,原理就是这么简单,根本不用去考虑什么闺年以及正常跨月的情况了...调用简单,执行效率高,居家旅行必备之函数.
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,原理就是这么简单,根本不用去考虑什么闺年以及正常跨月的情况了...调用简单,执行效率高,居家旅行必备之函数.
相关文章推荐
- php根据年月获取当月天数及日期数组的方法
- php根据年月获取当月天数及日期数组的方法
- JS根据年月获得当月天数的实现代码
- 【叶子函数分享三十九】根据年月得到当月的天数
- php根据年月获取当月天数。
- JS根据年月实现获得当月天数
- Android中根据出生年月计算生日剩余天数
- SQL根据已知的年月,计算该月的天数.
- SQL根据已知的年月,计算该月的天数.
- JS根据年月获得当月天数的实现代码
- C语言--根据年月计算该月天数
- javascript 根据年月计算天数
- 根据年月得到当月的天数
- 如何根据年月计算月份最大天数
- Go语言计算指定年月天数的方法
- 教你一招:根据身份证号计算出生年月和年龄 text函数和mid函数混用 datedif函数和today函数混用
- 个人记录--当前年月,求当月天数和上月
- java根据两个日期计算每月的天数,并且除去周六日
- IOS获取指定年月的当月天数
- C#关于日期 月 天数 和一年有多少周及根据某年某周获取时间段的相关计算