は、私はタイプDateTime
の@pstatDate
というパラメータを持っています。更新日時フィールドの日付部分
パラメータのdatePartをその月のLastdayに単純に更新する必要があります。例えば
日は、私はそれは私がこれを達成するにはどうすればよいApr 30 2012 2:15PM
にそれを更新する必要があるApr 23 2012 2:15PM
ある場合。
は、私はタイプDateTime
の@pstatDate
というパラメータを持っています。更新日時フィールドの日付部分
パラメータのdatePartをその月のLastdayに単純に更新する必要があります。例えば
日は、私はそれは私がこれを達成するにはどうすればよいApr 30 2012 2:15PM
にそれを更新する必要があるApr 23 2012 2:15PM
ある場合。
たぶん、このような何か:
DECLARE @Today DATETIME
SET @Today=GETDATE()
SELECT DATEADD(DAY,-DAY(DATEADD(MONTH,MONTH(@Today)+1,@Today)),
DATEADD(MONTH,1,@Today))
ます。また、このようにそれを行うことができます:@Aaronベルトランが言ったように
SELECT @Today+datediff(day, @Today, dateadd(month, 1, @Today))-
DATEPART(day,@Today)
:
を私は使用しては注意が必要だろう この構文はより新しいデータ型で失敗するため、暗黙的な日付の計算(@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
私はもともと元の質問で1、2、4の文章を読みました。 –
変数を宣言して1つのステップで初期化することはできないため、(要求されたとおりに)SQL-Server 2005では機能しません。とにかく+1 –
ありがとうTimさん、修正されました。 OPにはすでに宣言され、初期化された変数があるので、宣言は無関係だと私は思う。 –
+1ですが、datepart引数(例: 'm'の代わりに' MONTH')。すべての怠惰な簡略形式は直感的ではなく、コードが簡潔にするよりはるかに優れています。私見では。 –
確かにありがとうございます。それを行う:P – Arion
は '2012-04-31 15:37:00.200'の代わりに' 2012-01-31 15:37:00.200'を返す –