Examinez chacune des expressions individuellement. Utilisez Management Studio (ou similaire) pour exécuter ceci:
SELECT DATEADD(week, -1, GETDATE())
Et vous verrez quelque chose comme ceci (par rapport au moment où vous l'exécutez):
2017-09-27 15:05:39.453
C'est exactement il y a une semaine , qui était encore un mercredi. Vous voulez dimanche, le commencer de cette semaine. Donc faire maintenant ceci:
SELECT DATEADD(week, DATEDIFF(week, 0, GETDATE()) -1, 0)
Ce qui vous donne ce résultat:
2017-09-25 00:00:00.000
Closer. Cela fonctionne en prenant le jour 0 et en ajoutant un de moins que le nombre de semaines qui se sont écoulées depuis la semaine de votre date cible. Vous ajoutez des semaines entières, et vous vous retrouvez avec un début de semaine prévisible. Vous obtenez le 25 (lundi) au lieu du 24 parce que le jour 0 (1 janvier 1900) était un lundi. Mais il est fiable un lundi, et maintenant assez facile à expliquer l'un jour:
SELECT DATEADD(DAY, -1, DATEADD(week, DATEDIFF(week, 0, GETDATE()) -1, 0))
Et maintenant, nous avons une date que vous pouvez utiliser, d'une expression qui toujours obtenir le droit:
2017-09-24 00:00:00.000
Trier par. Vous devez tester soigneusement comment cela se comporte si vous utilisez Dimanche ou Lundi, d'autant plus que Sql Server dispose d'une valeur de début de semaine configurable. Vous constaterez peut-être que vous avez franchi une ou plusieurs limites de semaine et que vous vous retrouvez avec des erreurs bizarres au cas par cas. Mais même si cela se produit, cette approche vous met sur le chemin dont vous avez besoin pour marcher.
Pour l'autre bout, il suffit de changer le nombre de semaines:
SELECT DATEADD(week, DATEDIFF(week, 0, GETDATE()) -6, 0)
Pour obtenir:
2017-08-21 00:00:00.000
Depuis la question posée le lundi au lieu du dimanche, nous obtenons sauter le DATEADD()
supplémentaire D'avant.
maintenant mettre tous ensemble comme ceci:
WHERE hire_date between
DATEADD(week, DATEDIFF(week, 0, GETDATE()) -6, 0)
AND
DATEADD(DAY, -1, DATEADD(week, DATEDIFF(week, 0, GETDATE()) -1, 0))
Qu'est-ce qui ne fonctionne pas et que voulez-vous dire par aucun changement? – SQLChao