T-SQLを使用して今日が金曜日でない限り、先週の金曜日の日付を取得する 質問する

T-SQLを使用して今日が金曜日でない限り、先週の金曜日の日付を取得する 質問する

先週の金曜日の日付を取得するための正しい SQL コードを取得しようとしています。数日前、コードは正しいと思っていました。しかし、先週の金曜日の日付を取得しているのであって、最後の金曜日の日付ではないことに気付きました。この質問を書いている日は、2012 年 8 月 11 日土曜日の午前 12 時 23 分です。SQL Server では、このコードは 2012 年 8 月 3 日金曜日を返します。ただし、代わりに 2012 年 8 月 10 日金曜日を返すようにしたいです。このコードを修正するにはどうすればよいでしょうか。具体的に言うと、現在の日が金曜日であれば、今日の日付を返すようにします。つまり、昨日 (2012 年 8 月 10 日) で、このコードを昨日実行した場合、このコードは 2012 年 8 月 3 日ではなく 2012 年 8 月 10 日を返すようにします。

SELECT DATEADD(DAY, -3, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0))

ベストアンサー1

これを試して:

declare @date datetime;
set @date='2012-08-09'
SELECT case when datepart(weekday, @date) >5 then
 DATEADD(DAY, +4, DATEADD(WEEK, DATEDIFF(WEEK, 0, @date), 0)) 
else DATEADD(DAY, -3, DATEADD(WEEK, DATEDIFF(WEEK, 0, @date), 0)) end

結果:

2012-08-03 

例2:

declare @date datetime;
set @date='2012-08-10'
SELECT case when datepart(weekday, @date) >5 then
 DATEADD(DAY, +4, DATEADD(WEEK, DATEDIFF(WEEK, 0, @date), 0)) 
else DATEADD(DAY, -3, DATEADD(WEEK, DATEDIFF(WEEK, 0, @date), 0)) end

結果:

  2012-08-10 

おすすめ記事