sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo obtener el número de semana del mes a partir de la fecha en el servidor sql 2008

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