获取两个日期之间的季度列表(SQL)

尼罗N

我想收到给定日期之间的季度列表(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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章