3

過去3〜3か月間、月曜日に挿入されたテーブルのすべての行を収集する必要があります。これらの結果を取得するには、WHERE句の日付をどのように記述しますか?

WHERE Date = (wk, DATEDIFF(wk,0,GETDATE()), 0)

これで今週の月曜日からすべてが選択されますが、私が問題になっているのは、3か月前の月曜日の範囲を選択することです。

ありがとう!

つまり、これは私が最終的に作成したWHERE句であり、私にとってはうまく機能します。

where Datestamp > dateadd(month, -3, getdate())
AND datepart(weekday, Datestamp) = datepart(weekday, DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0))

月曜日から始まる曜日を入力する部分だけを変更しました...

DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0)
4

1 に答える 1

4
WHERE Date > dateadd(month, -3, getdate())
AND datepart(weekday, Date) = 1

これらは2つの別々の条件です。それらを1つに圧縮する必要はありません。

注:マシンでテストを実行して、で取得する値を確認してくださいdatepart(weekday, @AMondayDate)。一部のシステムでは月曜日が1で、他のシステムでは2です。DATEFIRST構成によって異なります。

アップデート:

平日の数字の問題を克服する巧妙なトリックを提供してくれたErikEに感謝します。

WHERE Date > dateadd(month, -3, getdate())
AND datepart(weekday, Date) = datepart(weekday, '2012-11-25')
于 2012-11-21T21:39:47.517 に答える