我创建了一个存储在Microsoft SQL Server 2008中的函数"ufngetFirstDateOfMonth"和"ufngetLastDateOfMonth".我的目的是向函数发送一些日期,它将返回"00:00:00"或者最后一个日期的月份的第一个日期. '23:59:59'的一个月.
我把这个函数称为:
exec ufngetLastDateOfMonth('2014-10-15')
Run Code Online (Sandbox Code Playgroud)
通常它会返回'2014-10-31 23:59:59'
但是当我发送有31天(8月,1月,...)的月份的最后日期时:
exec ufngetLastDateOfMonth('2014-10-31')
Run Code Online (Sandbox Code Playgroud)
它返回'2014-10-30 23:59:59'whick不正确实际上,应该是'2014-10-31 23:59:59'
这里出了点问题......
这是我的功能:
CREATE FUNCTION [dbo].[ufnLastDateOfMonth](@Date date)
RETURNS varchar(50)
AS
BEGIN
DECLARE @New_Date varchar(50)
select @New_date = cast(dateadd(dd,-(DAY(@Date )),DATEADD(mm,1,@Date ))as varchar(50)) + ' 23:59:59'
RETURN @New_Date
END
Run Code Online (Sandbox Code Playgroud)