내가 준 날짜를 기준으로 마지막 세 목요일 날짜를 얻으려고 노력했다. 나는 화요일 날짜를 삽입했지만 금요일 날짜에는 작동하지 않는다면 제대로 표시됩니다. 내가 한 일은이었다는 날짜를 기준으로 지난 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년 5월 10일
이다 그러나 그것이 있어야 05/3, 05/10, 05/17 ..... 무엇이 잘못 되었습니까? 아니면 다른 방법이 있습니까?
http://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-calendar-table.html –