私が与えた日付に基づいて、最後の 3 つの木曜日の日付を取得しようとしていました。火曜日の日付を挿入すると正しくなりましたが、金曜日の日付では機能しません。私がしたことは:
select dt from (select *,ROW_NUMBER() over (order by(d.dt)) as rn from
(SELECT Top 4 CONVERT(varchar, DATEADD(Month, -1, '5/29/2012')+number,101) as dt
FROM master..spt_values WHERE TYPE ='p' AND
DATEDIFF(d,DATEADD(Month, -1, '5/29/2012'),'5/29/2012') >= number
AND DATENAME(w,DATEADD(Month, -1, '5/29/2012')+number) = 'Thursday') as d )
as nw where nw.rn>1
私が得る出力は、2012 年 5 月 10 日、2012 年 5 月 17 日、2012 年 5 月 24 日です。
しかし、日付を2012年5月18日に変更すると、出力は次のようになります
2012 年 4 月 26 日、2012 年 5 月 3 日、2012 年 10 月 5 日
しかし、それは 05/3、05/10、05/17 である必要があります.....何が間違っているか、これを行う他の方法はありますか?