Aquí hay 2 formas diferentes, ambas asumiendo que la semana comienza el lunes
Si desea que las semanas sean completas, para que pertenezcan al mes en el que comienzan:Así que el sábado 2012-09-01 y el domingo 2012-09-02 es la semana 4 y el lunes 2012-09-03 es la semana 1, use esto:
declare @date datetime = '2012-09-01'
select datepart(day, datediff(day, 0, @date)/7 * 7)/7 + 1
Si sus semanas cortan el cambio de mes, de modo que el sábado 2012-09-01 y el domingo 2012-09-02 es la semana 1 y el lunes 2012-09-03 es la semana 2, use esto:
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
Recibí un correo electrónico de Gerald. Señaló una falla en el segundo método. Esto debería arreglarse ahora