我正在使用 SQL Server 2005。
在我的一个存储过程中,我有一个名为@pstatDate
type的参数DateTime
。
我必须简单地将参数的 datePart 更新为该月的 Lastday。
例如,如果日期是Apr 23 2012 2:15PM
我需要它更新它Apr 30 2012 2:15PM
我怎样才能做到这一点。
我正在使用 SQL Server 2005。
在我的一个存储过程中,我有一个名为@pstatDate
type的参数DateTime
。
我必须简单地将参数的 datePart 更新为该月的 Lastday。
例如,如果日期是Apr 23 2012 2:15PM
我需要它更新它Apr 30 2012 2:15PM
我怎样才能做到这一点。
也许是这样的:
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 所吸引,或者其他读者可能已经使用日期等)
所以根据那个然后是这样的:
SELECT DATEADD(DD,datediff(day, @Today, dateadd(month, 1, @Today))-
DATEPART(day,@Today),@Today)
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