の範囲の間の日付を生成についていくつかの質問はこれを試してみてくださいされています。
DECLARE @d1 DATE = '2016-04-20' , @d2 DATE = '2016-06-07'
, @mon1 DATE
;WITH
sunA AS (
SELECT k=1, dt = @d1, dn = datename(dw,@d1)
UNION ALL
SELECT k=k+1, dt = DATEADD(d,1,dt), dn = datename(dw,DATEADD(d,1,dt))
FROM sunA
WHERE k<7
)
SELECT TOP 1 @mon1 = dt
FROM sunA
WHERE dn = 'Monday'
ORDER BY k
DECLARE @weeks TABLE(d1 DATE, d2 DATE)
WHILE @mon1 >= @d1 AND DATEADD(d, 6, @mon1) <= @d2
BEGIN
INSERT INTO @weeks SELECT @mon1, DATEADD(d, 6, @mon1)
SET @mon1 = DATEADD(d, 7, @mon1)
END
SELECT * FROM @weeks
-- OUTPUT
d1 d2
2016-04-25 2016-05-01
2016-05-02 2016-05-08
2016-05-09 2016-05-15
2016-05-16 2016-05-22
2016-05-23 2016-05-29
2016-05-30 2016-06-05
どのDBMSを使用していますか。あなたは何も試しませんでした –
SQLサーバー2005 –