0

平日の日付の取得方法についてお聞きしたいのですが

ここに画像の説明を入力してください

green is weekday

red is sunday

したがって、SQLコマンドを入力すると(27のように)、2012年に2012-07-2から2012-07-08までの日付が表示されます

4

1 に答える 1

2

このクエリは、1 つのパラメーター@weeknoを入力として使用し、月曜日を週の最初の曜日として、その週の 7 日間を返します。@@Datefirst に依存するため、WeekNo の定義はSQL Server の定義に従いません。DatePart(Week)これはしません。

dateadd..行は、年の最初の月曜日を返す式です。私はここからそれを手に入れました。その上の行は、週を追加し、0-6 を追加して 7 日を作成します。これがどの年でも正しいことを確認するCURRENT_TIMESTAMPには、クエリを のような日付に変更します20180708。参考までに、2018 年 1 月 1 日は月曜日です。

declare @weekno int = 27;
select
    (@weekno-1)*7+v.num+
    dateadd(dd,(datediff(dd,0,dateadd(yy,datediff(yy,0,CURRENT_TIMESTAMP),6))/7)*7,0)
from (values(0),(1),(2),(3),(4),(5),(6))v(num)
order by num

-- results
July, 02 2012 00:00:00+0000
July, 03 2012 00:00:00+0000
July, 04 2012 00:00:00+0000
July, 05 2012 00:00:00+0000
July, 06 2012 00:00:00+0000
July, 07 2012 00:00:00+0000
July, 08 2012 00:00:00+0000
于 2012-10-05T05:15:55.967 に答える