平日の日付の取得方法についてお聞きしたいのですが
green is weekday
red is sunday
したがって、SQLコマンドを入力すると(27のように)、2012年に2012-07-2から2012-07-08までの日付が表示されます
平日の日付の取得方法についてお聞きしたいのですが
green is weekday
red is sunday
したがって、SQLコマンドを入力すると(27のように)、2012年に2012-07-2から2012-07-08までの日付が表示されます
このクエリは、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