0
我有兩個變量作爲參數傳遞給我的存儲過程:@fromdate & @tilldate。如何從日期範圍中提取星期日作爲參數
我需要提取每個星期日的日期。
我一直在嘗試一段時間,但無法實現解決方案。
任何幫助將不勝感激
我有兩個變量作爲參數傳遞給我的存儲過程:@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'
首先,通過使用Tally Table生成日期從@fromDate
到@tillDate
的列表,然後通過使用DATENAME
得到星期日:
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獨立方法。 Sun是%7 = 1,Mon是%7 = 2,... Sat是%7 = 0 – Squirrel