我正在使用SQL Server 2005。
在我的一个存储过程中,我有一个名为@pstatDate
的{{1}}类型的参数。
我必须简单地将参数的datePart更新为该月的Lastday。
例如,如果日期为DateTime
,我需要将其更新为Apr 23 2012 2:15PM
我怎样才能做到这一点。
答案 0 :(得分:3)
也许是这样的:
DECLARE @Today DATETIME
SET @Today=GETDATE()
SELECT DATEADD(DAY,-DAY(DATEADD(MONTH,MONTH(@Today)+1,@Today)),
DATEADD(MONTH,1,@Today))
你也可以这样做:
SELECT @Today+datediff(day, @Today, dateadd(month, 1, @Today))-
DATEPART(day,@Today)
就像@Aaron Bertrand所说:
我会小心使用隐式日期数学(@Today + ...)因为 此语法将在较新的数据类型上失败(OP最终可能会移动 关闭SQL Server 2005并被DATE或DATETIME2或其他诱惑 读者可能已经在使用DATE等。)
所以根据那个然后是这样的:
SELECT DATEADD(DD,datediff(day, @Today, dateadd(month, 1, @Today))-
DATEPART(day,@Today),@Today)
答案 1 :(得分:2)
DECLARE @pstatDate DATETIME;
SET @pstatDate = 'Apr 23 2012 2:15PM';
SELECT DATEADD(MONTH, 1, DATEADD(DAY, 0-DAY(@pstatDate), @pstatDate));
结果:
-----------------------
2003-04-30 14:15:00.000