【问题标题】:Date split-up based on break-up基于分手的日期分手
【发布时间】:2011-01-22 04:15:21
【问题描述】:

给定一个从日期,到日期,会计年度系统。我想根据要求的分手在给定的持续时间内获得所有的分手持续时间。

分手是:
1) 每周:应该从周一到周日进行。
2) 每月:这应该是每月的第一天到月底。
3) 季刊 由于会计年度系统是 4-3 月,因此季度分手应该是 4-6 月、7-9 月、10-12 月、1-3 月
4) 半年一次: 由于会计年度系统是4-3月,半年分手应该是4-9月,10-3月。
5) 年度: 由于会计年度系统是四月-三月,因此年度分手应该是四月-三月。

下面通过示例进行说明。
示例 1:
开始日期:2010 年 2 月 10 日
迄今为止:2010 年 2 月 10 日
会计年度系统:4月至3月

每周分手:2010 年 2 月 8 日至 2010 年 2 月 14 日
每月分手:2010 年 2 月 1 日至 2010 年 2 月 28 日
季度分手:2010 年 1 月 1 日至 2010 年 3 月 31 日
半年分手:2009 年 10 月 1 日至 2010 年 3 月 31 日
年度分手:2009 年 4 月 1 日至 2010 年 3 月 31 日

我正在寻找在 PostgreSQL 8.2 中解决此问题的方法/算法。

这篇文章与此处发布的问题类似: Date split-up based on Fiscal Year

【问题讨论】:

    标签: sql database algorithm postgresql


    【解决方案1】:

    与其尝试在代码中执行此操作,不如使用以日期和期间属性为键的日历表。
    例如

    CREATE TABLE calendar_day (
    day_date DATE PRIMARY KEY,
    week_number INTEGER NOT NULL,
    month_number SMALLINT NOT NULL,
    quarter_number SMALLINT NOT NULL,
    demi_year_number SMALLINT NOT NULL,
    fiscal_year SMALLINT NOT NULL);
    

    这可以使用 generate_series() 和 postgresql 日期函数相当容易地填充,然后根据您希望使用的日期标准用于加入

    【讨论】:

      猜你喜欢
      • 2015-10-07
      • 1970-01-01
      • 2021-12-01
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      相关资源
      最近更新 更多