我想收到给定日期之间的季度列表(startDate 和 EndDate 参数)。
例如部分季度日期:
StartDate : 2017-01-01
EndDate : 2017-06-15
Result : Q1 Q2
另一个样本:
StartDate : 2017-01-01
EndDate : 2017-06-30
Result : Q2
你可以尝试这样的事情,如果你有很多季度要列出,你需要覆盖最大递归:
DECLARE @start_date DATE = '20170101';
DECLARE @end_date DATE = '20170615';
WITH x AS (
SELECT
YEAR(@start_date) AS [year],
DATEPART(QUARTER, @start_date) AS [quarter]
UNION ALL
SELECT
CASE
WHEN [quarter] = 4 THEN [year] + 1
ELSE [year]
END AS [year],
CASE
WHEN [quarter] = 4 THEN 1
ELSE [quarter] + 1
END AS [quarter]
FROM
x
WHERE
[year] <= YEAR(@end_date)
AND [quarter] < DATEPART(QUARTER, @end_date))
SELECT * FROM x;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句