私は2つの変数をストアドプロシージャのパラメータとして渡します:@fromdate & @tilldate。パラメータとして渡された日付範囲から日曜日を抽出する方法
毎週日にちの日付を抽出する必要があります。
私はしばらく試してみましたが、解決策を達成できませんでした。
任意の助けが理解されるであろう私は2つの変数をストアドプロシージャのパラメータとして渡します:@fromdate & @tilldate。パラメータとして渡された日付範囲から日曜日を抽出する方法
毎週日にちの日付を抽出する必要があります。
私はしばらく試してみましたが、解決策を達成できませんでした。
任意の助けが理解されるであろう; with dates as
(
select date = @fromdate
union all
select date = dateadd(day, 1, date)
from dates
where date < @tilldate
)
select *
from dates
where datename(weekday, date) = 'Sunday'
まず、DATENAME
を使用して、日曜日を取得し、その後Tally Tableを使用して@fromDate
から@tillDate
に日付のリストを生成し、:
DECLARE @fromDate DATE = '20160301',
@tillDate DATE = '20160331'
;WITH E1(N) AS(
SELECT * FROM (VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) t(N)
),
E2(N) AS(SELECT 1 FROM E1 a CROSS JOIN E1 b),
E4(N) AS(SELECT 1 FROM E2 a CROSS JOIN E2 b),
CteTally(N) AS(
SELECT TOP (DATEDIFF(DAY, @fromDate, @tillDate) + 1)
ROW_NUMBER() OVER(ORDER BY (SELECT NULL))
FROM E4
)
SELECT
dt = DATEADD(DAY, N - 1, @fromDate)
FROM CteTally
WHERE (DATEPART(dw, DATEADD(DAY, N - 1, @fromDate)) + @@DATEFIRST) % 7 = 1
(DATEPART(dw, DATEADD(DAY, N - 1, @fromDate)) + @@DATEFIRST) % 7 = 1
言語に関係なく生成日が日曜日であるかどうかを確認し、@@DATEFIRST
の設定を指定します。
+1と@@ datefirstの独立メソッド。太陽は%7 = 1、月は%7 = 2、...土は%7 = 0 – Squirrel