1

SQL Server 2005 でレコードを取得するにはどうすればよいですか。入力は平日の日付になります。出力は、その日付の前のその週のすべてのレコードである必要があります。たとえば、水曜日の日付を指定すると、その週の月曜日から水曜日までのすべてのレコードを取得する必要があります。

平日が入力として与えられたときに、特定の週のすべてのレコードを取得するためにこれを試しました。でも月曜から指定日までの記録が欲しい。

where RD.Date > DATEADD(dd, -(DATEPART(dw, @Date)-1), @Date) and RD.Date < DATEADD(dd, 7-(DATEPART(dw, @Date)), @Date)

事前に助けてくれてありがとう!!

4

2 に答える 2

3

これはどう?

 WHERE RD.Date BETWEEN DATEADD(wk, DATEDIFF(wk,0,@Date), 0) AND @Date

SQL Server では、BETWEEN は包括的検索を強制するので、RD.DATE に対して > と < を実行できます。

于 2013-08-27T15:13:17.977 に答える
2

これはうまくいくはずです:

SET DATEFIRST 1
...
WHERE RD.Date >= DATEADD(dd, (-1) * (DATEPART(dw, @Date) - 1), @Date)
AND   RD.Date < DATEADD(dd, 1, @Date) -- inclusive

DATEPART(dw, @Date)週の曜日番号を返すので、水曜日の場合は 3 を返します。しかし、月曜日を含めたいので、1 を引く必要がありました。

Lamak のコメントによるMSDN :

datepart が週 (wk、ww) または週日 (dw) の場合、戻り値は SET DATEFIRST を使用して設定された値によって異なります。

于 2013-08-27T15:12:09.043 に答える