计算两个日期之间的整月数
由于SQL Server 的DateDiff函数不考虑比指定的日期部分更高的粒度级别,它只考虑更低级别的部分。例如 计算2009-12-31 和 2010-1-1 之间相差的月数,结果是1。所以用Datediff(month,’2009-12-31′,’2010-1-1′) 就不能得到想要的结果0了。所以需要判断是否足月,不是足月要在原月数上减去1 。
–测试环境 SQL SERVER 2005
–判断是否需要减去1 需要满足下列条件
–1、开始日期的天数要大于结束日期的天数
–2、结束日期的天数要小于结束日期月的天数(即该结束日期月还未足月)
CREATE FUNCTION fnMonthNum(@FirstDate DATETIME,@LastDate DATETIME)
RETURNS INT
WITH RETURNS NULL ON NULL INPUT
AS
BEGIN
DECLARE @Num INT
SELECT @Num=datediff(month,@FirstDate,@LastDate) -
CASE WHEN Day(@FirstDate)>DAY(@LastDate) AND DAY(@LastDate)<32-DAY(@LastDate+(32-Day(@LastDate))) THEN 1 ELSE 0 END
RETURN @Num
END
—测试
SELECT dbo.fnMonthNum(’20091231′,’20100131′) –1
原文:http://space.itpub.net/15042150/viewspace-624623
浙公网安备 33010602011771号