Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como obter o número da semana do mês a partir da data no sql server 2008


Aqui estão 2 maneiras diferentes, ambas assumindo que a semana começa na segunda-feira

Se você quiser que as semanas sejam inteiras, elas pertençam ao mês em que começam:Então, sábado 2012-09-01 e domingo 2012-09-02 é a semana 4 e segunda-feira 2012-09-03 é a semana 1, use isto:
declare @date datetime = '2012-09-01'
select datepart(day, datediff(day, 0, @date)/7 * 7)/7 + 1

Se suas semanas forem cortadas na mudança de mês, então sábado 2012-09-01 e domingo 2012-09-02 é a semana 1 e segunda-feira 2012-09-03 é a semana 2, use isto:
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

Recebi um e-mail de Gerald. Ele apontou uma falha no segundo método. Isso deve ser corrigido agora