SQL Server クエリでカレンダーを作成する方法

SQL Server
この記事は約2分で読めます。

クエリでカレンダーを作成する方法です。基準日を軸に1月分のカレンダーを作成します

--基準日
DECLARE @toDay   AS DATE = '2019-11-07';
--月初
DECLARE @mStart  AS DATE = dateadd(dd,-datepart(dd,@toDay)+1, @toDay);
--月末
DECLARE @mEnd    AS DATE = dateadd(dd ,-datepart(dd,dateadd(mm,1,@toDay)),dateadd(mm,1,@toDay));

-- テーブル変数を定義
DECLARE @tmpCalendar TABLE
(
 [Date] DATE
,[WeekDay] INT
);

WITH DateTable ([Date],[WeekDay])
AS
(
    SELECT @mStart,DATEPART(WEEKDAY,@mStart)
    UNION ALL
    SELECT DATEADD(dd, 1, [Date]),DATEPART(WEEKDAY,DATEADD(dd, 1, [Date]))
    FROM DateTable
    WHERE [Date] < @mEnd
)
INSERT INTO @tmpCalendar
SELECT [Date],[WeekDay]
FROM DateTable
OPTION (MAXRECURSION 0);

SELECT * FROM @tmpCalendar

コメント

タイトルとURLをコピーしました