Zde jsou 2 různé způsoby, oba za předpokladu, že týden začíná v pondělí
Pokud chcete, aby týdny byly celé, tak patří do měsíce, ve kterém začínají:Takže sobota 2012-09-01 a neděle 2012-09-02 je týden 4 a pondělí 2012-09-03 je týden 1 použijte toto:
declare @date datetime = '2012-09-01'
select datepart(day, datediff(day, 0, @date)/7 * 7)/7 + 1
Pokud se vaše týdny zkracují při změně měsíce, takže sobota 2012-09-01 a neděle 2012-09-02 je týden 1 a pondělí 2012-09-03 je týden 2, použijte toto:
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
Dostal jsem e-mail od Geralda. Upozornil na chybu ve druhé metodě. To by mělo být nyní opraveno