2

我正在使用 SQL Server 2005。

在我的一个存储过程中,我有一个名为@pstatDatetype的参数DateTime

我必须简单地将参数的 datePart 更新为该月的 Lastday。

例如,如果日期是Apr 23 2012 2:15PM我需要它更新它Apr 30 2012 2:15PM

我怎样才能做到这一点。

4

2 回答 2

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 所吸引,或者其他读者可能已经使用日期等)

所以根据那个然后是这样的:

SELECT DATEADD(DD,datediff(day, @Today, dateadd(month, 1, @Today))-
DATEPART(day,@Today),@Today)
于 2012-04-23T13:22:56.533 回答
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
于 2012-04-23T13:23:00.827 回答