1

毎週水曜日にデータが入力されるテーブルが 1 つあります。したがって、先週の水曜日から最近発生した水曜日までのデータを取得する必要があります。

例: 今日が木曜日(2013 年 6 月 6 日) の場合、 2013年 5 月 29 日 (つまり、前月の最後の水曜日、5 月) から2013年 5 月 6 日(昨日)までのデータをフェッチする必要があります。

私が試してみました

select dateadd(dd,datediff(dd,0,'GetDate()')/7 * 7 + 2,0)これは 2013 年 5 月 6 日を与え、2013 年 5 月 29 日 select dateadd(wk,-1,datediff(dd,0,'GetDate()')/7 * 7 + 2)を与えます

このコードでdateadd(dd,datediff(dd,0,'GetDate()')/7 * 7、週の最初の曜日(この場合は月曜日) に移動し、+2 を追加することで水曜日の日付になります。

問題コードは月曜日以外は正常に動作します。

例:次の月曜日(つまり、2013 年 6 月 10 日)、

2013 年 5 月 6 日(昨日)から2013年 6 月12日 (次の水曜日)までの結果を返し ます 。

何か案は?

4

1 に答える 1

4
DECLARE @ActualDatePayable DATETIME,@LASTDateMonth DATETIME

SET @ActualDatePayable='02/01/2013'

SET @LASTDateMonth=DATEADD(d,-1,DATEADD(m,1,@ActualDatePayable))

SET @ActualDatePayable=(select MAX(date) AS LastWednesday from (

select dateadd(day,number,@ActualDatePayable) as date from master..spt_values 
where type='p' and number < DAY(@LASTDateMonth) ) t
where   datename(weekday,date) = 'Wednesday')

SELECT @ActualDatePayable
于 2013-06-07T01:05:45.583 に答える