1

SELECTSQL Server 2005で、日付演算を使用して次の計算を行う簡単なステートメントを記述したいと思います。

現在の日付(つまりgetdate())から開始して、前の月曜日を決定し、その月曜日から70日を引いて、結果の日付を出力に表示します。

どうすればこれを達成できますか?

私の難しさは主に前の月曜日を決定することです。

もちろん、getdate()が月曜日の場合、前の月曜日はgetdate()

よろしくお願いします。

UltraCommit

編集:イタリアでは、週の最初の日は日曜日ではなく月曜日であることに注意してください。したがって、入力が2012年7月29日日曜日の場合、出力は7月30日ではなく7月23日である必要があります。

4

3 に答える 3

2

これにより、今週の月曜日が取得されます

Select DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0)

次に、上記の日から70を引く必要があります

SELECT Dateadd(DAY,-70,DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0))

編集: SOに投稿された回答を確認してください

週の1日を示すDATEFIRSTが月曜日に設定されているため、月曜日は現在の週として表示されます。日曜日に設定するには、設定を日曜日に変更する必要があります。

 Set DATEFIRST 7

それ以外の場合は、上記のSOリンクで提案されているように、コードを変更する必要があります

 DECLARE @dt DATE = '1905-01-01';
 SELECT [start_of_week] = DATEADD(WEEK, DATEDIFF(WEEK, @dt, CURRENT_TIMESTAMP), @dt);
于 2012-07-24T09:59:47.490 に答える
2

先週の月曜日を取得するには、 http: //blog.sqlauthority.com/2007/08/20/sql-server-find-monday-of-the-current-week/をご覧ください。

于 2012-07-24T10:00:00.393 に答える
2

これで始められるはずです。今週の先週の月曜日が見つかります。

SELECT DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0) MondayOfCurrentWeek

70日を差し引くには、末尾に-70を追加します。

SELECT DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0)-70 as SomeMondayInHistory
于 2012-07-24T10:00:08.117 に答える