Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come ottenere il numero della settimana del mese dalla data in sql server 2008

Ecco 2 modi diversi, entrambi presuppongono che la settimana inizi di lunedì

Se vuoi che le settimane siano intere, quindi appartengono al mese in cui iniziano:Quindi sabato 01-09-2012 e domenica 02-09-2012 è la settimana 4 e lunedì 03-09-2012 è la settimana 1 usa questo:

declare @date datetime = '2012-09-01'
select datepart(day, datediff(day, 0, @date)/7 * 7)/7 + 1

Se le tue settimane tagliano il mese, cambia così sabato 01-09-2012 e domenica 02-09-2012 è la settimana 1 e lunedì 03-09-2012 è la settimana 2 usa questo:

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

Ho ricevuto un'e-mail da Gerald. Ha evidenziato un difetto nel secondo metodo. Questo dovrebbe essere risolto ora