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

comment obtenir les données de la semaine en cours uniquement sur le serveur SQL ?

Faites comme ceci :

SET DATEFIRST 1 -- Define beginning of week as Monday
SELECT [...]
AND WorkDate >= dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate())) 
AND WorkDate <  dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate()))

Explication :

  • datepart(dw, getdate()) renverra le numéro du jour de la semaine en cours, de 1 à 7, en commençant par ce que vous avez spécifié en utilisant DÉFINIR LA PREMIÈRE DATE .
  • dateadd(day, 1-datepart(dw, getdate()), getdate()) soustrait le nombre de jours nécessaire pour arriver au début de la semaine en cours
  • CONVERT(date,getdate()) est utilisé pour supprimer la partie heure de GETDATE(), car vous voulez que les données commencent à minuit.