最近做报表,遇到个问题,求上季度、上上季度。
问题是这样的,传个日期,月有限制,只能是3、6、9、12月,求该日期的上季度,上上季度。
例如:输入:2009-3 上季度为:2008-12 上上季度为:2008-9
解决如下:
输入参数: y (年) 、m(月)
需要结果:y1 (上季度年)、m1(上季度月)、y2(上上季度年)、m2(上上季度月)
m、m1、m2只能是3、6、9、12
公式:
y1=y-1+(m+1)/7
m1=12*(1-(m+1)/7)+m-3
y2=y-1+m/9
m2=12*(1-m/9)+m-6
几天的郁闷终于有结果了!
------------------------------------------------------------------------
注:/ 代表整除,没有小数的,但数据库中却并不代表这个意思,至少oracle不是
select 10/3 from dual 返回:3.333333
这并不是希望的结果,所有要减去模数
select(10 - mod(10, 3)) / 3 from dual
修正:另一种解决方案 用floor
y1=y-1+floor((m+1)/7)