2010-03-01 112 views
0

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

分手是:
1)每周:这应该从周一到周日。
2)每月:这应该是一个月的第一个月到月底。
3)季度 由于财政年度系统APR-月,季度分手应该是四月至六月,七月至九月,十月至十二月,一月至三月
4)半年: 由于财政年度系统是4月到3月,半年分手应该是4 - 9月,10 - 3月。
5)年度: 由于财政年度系统是4月至3月,年度分手应为4月至3月。

用实例说明如下。
例1:
开始日期:二月-10-2010
要日期:二月-10-2010
财政年度系统:4至3月

周刊破碎:二月-08-2010到二月-14-2010
每月分手:Feb-01-2010至Feb-28-2010
季度分手:Jan-01-2010至Mar-31-2010
半年分手:Oct-01-2009至Mar -31-2010
年度分手:Apr-01-2009至Mar-31-2010

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

这篇文章是类似于在这里发表问题: Date split-up based on Fiscal Year

+0

任何意见或办法日期条件加入? – Gnanam 2010-03-02 04:15:22

回答

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日期函数来填充,然后用于根据你想使用