sql – 基于会计年度的日期拆分

鉴于从日期,到日期和财政年度系统,我希望得到所有分割期限

来自&基于财政年度制度的日期.下面用例子说明:

例1:
财政年度制度:4月至3月

从日期:2008年1月5日
迄今为止:May-15-2008

根据财政年度制度,持续时间应分为:

Jan-05-2008 to Mar-31-2008
Apr-01-2008 to May-15-2008

例2:
财政年度制度:4月至3月

自日期:2008年1月17日
迄今:2009年5月20日

根据财政年度制度,持续时间应分为:

Jan-17-2008 to Mar-31-2008
Apr-01-2008 to Mar-31-2009
Apr-01-2009 to May-20-2009

我在PostgreSQL 8.2中寻找方法/算法来解决这个问题.

问候,

Gnanam

最佳答案 我实际上更喜欢Andomar的解决方案(增加了一个自动填充Periods表的流程),但为了好玩,这里有一个不需要它的解决方案.

CREATE TABLE your_table (start_date date, end_date date);
INSERT INTO your_table VALUES ('Jan-17-2008', 'May-20-2009');

SELECT
    GREATEST(start_date, ('04-01-'||series.year)::date) AS year_start,
    LEAST(end_date, ('03-31-'||series.year + 1)::date) AS year_end
FROM
    (SELECT
        start_date,
        end_date,
        generate_series(
            date_part('year', your_table.start_date - INTERVAL '3 months')::int,
            date_part('year', your_table.end_date - INTERVAL '3 months')::int)
    FROM your_table) AS series(start_date, end_date, year)
ORDER BY
    start_date;
点赞