Ето 2 различни начина, като и двата предполагат, че седмицата започва в понеделник
Ако искате седмиците да са цели, така че да принадлежат към месеца, в който започват:Така че събота 2012-09-01 и неделя 2012-09-02 е седмица 4, а понеделник 2012-09-03 е седмица 1, използвайте това:
declare @date datetime = '2012-09-01'
select datepart(day, datediff(day, 0, @date)/7 * 7)/7 + 1
Ако вашите седмици се съкращават при промяна на месеца, така че събота 2012-09-01 и неделя 2012-09-02 е седмица 1, а понеделник 2012-09-03 е седмица 2, използвайте това:
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
Получих имейл от Джералд. Той посочи недостатък на втория метод. Това трябва да бъде поправено сега