SQLServer2005を使用しています。
ストアドプロシージャの1つに、@pstatDate
タイプというパラメータがありますDateTime
。
パラメータのdatePartをその月の最終日に単純に更新する必要があります。
たとえば、日付がApr 23 2012 2:15PM
必要な場合は、次のように更新しますApr 30 2012 2:15PM
どうすればこれを達成できますか。
SQLServer2005を使用しています。
ストアドプロシージャの1つに、@pstatDate
タイプというパラメータがありますDateTime
。
パラメータのdatePartをその月の最終日に単純に更新する必要があります。
たとえば、日付が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に誘導される可能性があります。または、他のリーダーがすでにDATEなどを使用)
したがって、それによると、次のようなものです:
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