Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment obtenir le numéro de semaine du mois à partir de la date dans SQL Server 2008

Voici 2 façons différentes, les deux supposent que la semaine commence le lundi

Si vous voulez que les semaines soient entières, elles appartiennent donc au mois au cours duquel elles commencent :Donc, samedi 01/09/2012 et dimanche 02/09/2012 est la semaine 4 et lundi 03/09/2012 est la semaine 1, utilisez ceci :

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

Si vos semaines ont été coupées au cours du mois, alors samedi 01/09/2012 et dimanche 02/09/2012 est la semaine 1 et lundi 03/09/2012 est la semaine 2, utilisez ceci :

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

J'ai reçu un e-mail de Gérald. Il a souligné une faille dans la seconde méthode. Cela devrait être corrigé maintenant