注:としては、すでにコメントで他のユーザーが指摘し、このクエリはつまりDATEFIRST
、サーバーの設定に依存します。設定が異なるためにクエリに変更が必要な場合は、私に教えてください。あなたのために変更することができます。ダミーデータとしてCTEを使用して
...
/* Ignore this part...*/
WITH CTE AS
(
SELECT CAST('01/01/2017' AS DATE) AS [Date]
UNION ALL
SELECT DATEADD(DAY,1,[Date])
FROM CTE
WHERE DATE <= '12/31/2017'
)
/*Your actual SELECT statement would look like this, from your own table of course*/
SELECT
[Date]
,CASE DATEPART(dw,[Date])
WHEN 1 THEN 'Sunday'
WHEN 2 THEN 'Monday'
WHEN 3 THEN 'Tuesday'
WHEN 4 THEN 'Wednesday'
WHEN 5 THEN 'Thursday'
WHEN 6 THEN 'Friday'
WHEN 7 THEN 'Saturday'
END
FROM CTE
WHERE DATEPART(dw,[Date]) IN (1,7)
AND MONTH([Date]) = 12--<month>
AND YEAR([Date]) = 2017--<year>
OPTION (MAXRECURSION 0) -- You won't need this line if you're querying a real table
;
あなたのために働くランニングは、その後、あなたの本当のクエリは、おそらくこのような何かになりたい場合:あなたはにしたい場合は
SELECT
[Date]
,CASE DATEPART(dw,[Date])
WHEN 1 THEN 'Sunday'
WHEN 2 THEN 'Monday'
WHEN 3 THEN 'Tuesday'
WHEN 4 THEN 'Wednesday'
WHEN 5 THEN 'Thursday'
WHEN 6 THEN 'Friday'
WHEN 7 THEN 'Saturday'
END
FROM < the table you want >
WHERE DATEPART(dw,[Date]) IN (1,7) -- Only Sundays and Saturdays
AND MONTH([Date]) = < the month you want >
AND YEAR([Date]) = < the year you want >
;
をのデータを生成すると、CTEが移動する方法です。パラメータを渡している場合は、次のようになります。
DECLARE
@MONTH INT
,@YEAR INT
;
SET @MONTH = 1;
SET @YEAR = 2017;
WITH CTE AS
(
SELECT CAST(CAST(@MONTH AS VARCHAR(2)) + '/01/' + CAST(@YEAR AS VARCHAR(4)) AS [Date]) AS DATE
UNION ALL
SELECT DATEADD(DAY,1,[Date])
FROM CTE
WHERE DATE <= CAST(@MONTH AS VARCHAR(2)) +
CASE
WHEN @MONTH IN (9,4,6,11)
THEN '/30/'
WHEN @MONTH IN (1,3,5,7,8,10,12)
THEN '/31/'
WHEN @MONTH = 2 AND @YEAR/4.00 = @YEAR/4
THEN '/29/'
ELSE '/28/'
END
+ CAST(@YEAR AS VARCHAR(4))
)
SELECT
[Date]
,CASE DATEPART(dw,[Date])
WHEN 1 THEN 'Sunday'
WHEN 2 THEN 'Monday'
WHEN 3 THEN 'Tuesday'
WHEN 4 THEN 'Wednesday'
WHEN 5 THEN 'Thursday'
WHEN 6 THEN 'Friday'
WHEN 7 THEN 'Saturday'
END
FROM CTE
WHERE DATEPART(dw,[Date]) IN (1,7)
OPTION (MAXRECURSION 0)
;
を(https://blog.sqlauthority.com/2009/12/29/sql-server -get-all-all-weekdays-or-weekends-of-year /) – Wanderer
@ Ullasアンケートに満足すれば何が間違っていますか? – Husen
答えにソースリンクを追加しても間違いないと思います。現時点では、あなたはこのスクリプトを書いたように見えます... – PawelCz