Här är två olika sätt, båda antar att veckan börjar på måndag
Om du vill att veckor ska vara hela, så tillhör de månaden de börjar:Så lördag 2012-09-01 och söndag 2012-09-02 är vecka 4 och måndag 2012-09-03 är vecka 1 använd detta:
declare @date datetime = '2012-09-01'
select datepart(day, datediff(day, 0, @date)/7 * 7)/7 + 1
Om dina veckor minskar med månadsändring så lördag 2012-09-01 och söndag 2012-09-02 är vecka 1 och måndag 2012-09-03 är vecka 2 använd detta:
declare @date datetime = '2012-09-01'
select datediff(week, dateadd(week,
datediff(day,0,dateadd(month,
datediff(month,0,@date),0))/7, 0),@date-1) + 1
Jag fick ett mejl från Gerald. Han påpekade ett fel i den andra metoden. Detta borde vara åtgärdat nu