我试图根据我给出的日期来获得最后三个星期四的日期。如果我插入星期二的日期但不适用于星期五的日期,那我就做对了。我所做的是:
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 日。
但是当我将日期更改为 5/18/2012 时,我得到的输出是
2012 年 4 月 26 日、2012 年 5 月 3 日、2012 年 5 月 10 日
但它应该是 05/3, 05/10, 05/17 .....出了什么问题或者有没有其他方法可以做到这一点?