それぞれの式を個別に調べます。使用Management Studioの(または類似の)ちょうどこの実行するために:
SELECT DATEADD(week, -1, GETDATE())
をそして、あなたは(あなたがそれを実行時に比べて)このような何かわかります
2017-09-27 15:05:39.453
丁度1週間前ですそれはまだ水曜日だった。あなたは、その週の開始を日曜日にしたい。だから今、この操作を行います。
2017-09-25 00:00:00.000
クローサー:あなたにこの結果を与える
SELECT DATEADD(week, DATEDIFF(week, 0, GETDATE()) -1, 0)
を。これは、0日目をとり、目標日からその週以降経過した週数を1つ追加することによって機能します。あなたは一週間を追加しているので、予測可能な一週間の始まりで終わります。 0日(1900年1月1日)が月曜日だったので、24日ではなく25日(月曜日)になります。
SELECT DATEADD(DAY, -1, DATEADD(week, DATEDIFF(week, 0, GETDATE()) -1, 0))
そして今、我々は一貫して、それが権利を取得する式から、あなたが使用することができ、日付があります:
しかし、それは
確実月曜日、そしてもう1日を占めるようになりまし十分に簡単です
2017-09-24 00:00:00.000
並べ替え日曜日または月曜日に実行する場合、特にSql Serverの設定可能な開始週値があるため、これがどのように動作するかを慎重にテストする必要があります。期待していた週境界を1つ下回ったり、超えてしまったりして、奇妙なオフ・バイ・ワンのエラーで終わることがあります。しかし、それが起こっても、この方法はあなたが歩く必要がある道にあなたを置きます。この取得するには
SELECT DATEADD(week, DATEDIFF(week, 0, GETDATE()) -6, 0)
:もう一方の端のために
、わずか数週間の数を変更月曜日の代わりの日曜日を求めた質問は、私たちは余分をスキップし得るので
2017-08-21 00:00:00.000
をDATEADD()
以前から。
今そうのように一緒にそれをすべて置く:
WHERE hire_date between
DATEADD(week, DATEDIFF(week, 0, GETDATE()) -6, 0)
AND
DATEADD(DAY, -1, DATEADD(week, DATEDIFF(week, 0, GETDATE()) -1, 0))
何が変わらないのでしょうか? – SQLChao