2

SQLServer2005を使用しています。

ストアドプロシージャの1つに、@pstatDateタイプというパラメータがありますDateTime

パラメータのdatePartをその月の最終日に単純に更新する必要があります。

たとえば、日付が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に誘導される可能性があります。または、他のリーダーがすでにDATEなどを使用)

したがって、それによると、次のようなものです:

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 に答える