我試圖根據我給出的日期得到最後三個星期四的日期。如果我插入星期二的日期,但不適用於星期五的日期,我知道了。我做的是:根據我們輸入的日期獲取最後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
和我得到的輸出是5/10/2012,5/17/2012,5/24/2012。
但是,當我將日期更改爲5/18/2012輸出我得到的是
04/26/2012,05/03/2012,05/10/2012
但應05/3,05/10,05/17 .....有什麼不對或有其他方法可以做到這一點?
http://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-calendar-table.html –