Если вы используете SQL Server , вы можете выполнить расчет, используя основную таблицу, не создавая таблицу календаря. Этот парень дает вам очень хорошее объяснение, которое я рекомендую вам прочитать. Его SQL для расчета первого и последнего воскресений каждого месяца может быть адаптирован для вашего использования:
declare @year int
set @year =2011
select min(dates) as first_sunday,max(dates) as last_sunday from
(
select dateadd(day,number-1,DATEADD(year,@year-1900,0))
as dates from master..spt_values
where type='p' and number between 1 and
DATEDIFF(day,DATEADD(year,@year-1900,0),DATEADD(year,@year-1900+1,0))
) as t
where DATENAME(weekday,dates)='sunday'
group by DATEADD(month,datediff(month,0,dates),0)
Редактировать: Если у вас есть дата четверга, вы можете получить номер недели с этой даты, например:
DECLARE @Dt datetime
SELECT @Dt='02-21-2008'
SELECT DATEPART( wk, @Dt)