将DateTime字段的日期部分更新为Lastday-SQL

时间:2012-04-23 13:19:44

标签: sql tsql sql-server-2005

我正在使用SQL Server 2005。

在我的一个存储过程中,我有一个名为@pstatDate的{​​{1}}类型的参数。

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

例如,如果日期为DateTime,我需要将其更新为Apr 23 2012 2:15PM

我怎样才能做到这一点。

2 个答案:

答案 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