TSQL Sélection des intervalles de 2 et 3 semaines

Je tente de remplir une table basée sur des intervalles de 2 et 3 semaines pour une période de paie bimensuelle dans TSQL. La table doit remplir,

2 week date 2 week date 3 week date 2 week date 2 week date 3 week date 

..basé sur la première date que je fournis, ajoutant ensuite 2 ou 3 semaines à la dernière date fournie. Je devrais être en mesure de fournir une date de début et une date de fin. Il se peut que ce soit juste tôt le matin, mais je ne peux pas imaginer une manière élégante d'accomplir cette tâche. Des pointeurs?

Merci! George

Approche de la force brute Horrid – parce que le 2,2,3 est difficile à boucler juste en l'ajoutant dans la table temporaire, puis en filtrant à la fin en entrant quelques inputs supplémentaires – pas le plus efficace mais si vous avez besoin d'get juste une gamme un hors puis ça marche.

Donc, la mise en garde ici est: ok pour un hors, je ne voudrais pas utiliser dans la production 🙂

 declare @start datetime declare @end datetime declare @calculated datetime set @start = '20010101' set @end = '20011231' set @calculated = @start Create Table #Dates (PayDate datetime) while @calculated <= @end begin set @calculated = DateAdd(wk,2,@calculated) insert into #Dates(paydate) values (@calculated) set @calculated = DateAdd(wk,2,@calculated) insert into #Dates(paydate) values (@calculated) set @calculated = DateAdd(wk,3,@calculated) insert into #Dates(paydate) values (@calculated) end select * from #Dates where paydate >= @start and paydate <= @end drop table #dates 
 WITH dates (d, n) AS ( SELECT @mydate, 1 UNION ALL SELECT DATEADD(week, CASE n % 3 WHEN 0 THEN 3 ELSE 2 END, d), n + 1 FROM dates WHERE d < @enddate ) INSERT INTO mytable SELECT d FROM dates OPTION (MAXRECURSION 0) 

Donc, vous avez un cycle de 7 semaines – déterminez quelle période de 7 semaines vous êtes à partir d'un sharepoint départ connu et ensuite quelle semaine de ce groupe de 7 vous êtes.