在Oracle中,我希望通过传递季度值来提取季度的开始日期和结束日期。
例如v_quarter = 'Q2';
我想通过传递v_quarter值来获取开始和结束日期。另外,我的财政年度从4月份开始。因此,Q1应该是4-Jun,Q2应该是7-9月,依此类推。
谢谢!
发布于 2018-07-23 18:08:26
像这样的东西?
第2-4行表示行生成器技术之一,并创建全年("yr"),具有12个月(第4行)。
第2行:SYSDATE
to 'yyyy'
的TRUNC
返回01.01.2018。通过将月份(level - 1
)相加12次,可以得到从1月到12月的月份。
第6-9行是“季度”,因为应用于日期值的'q'
格式掩码返回季度。当您的会计年度从4月份开始时,CASE会切换季度。
最后,第11- 14行返回您作为参数传递的每个季度的起始月份和结束月份(第14行;我使用的是第一个季度的q = 1
)。
SQL> with yr as
2 (select add_months(trunc(sysdate, 'yyyy'), level - 1) mon
3 from dual
4 connect by level <= 12
5 ),
6 qr as
7 (select mon,
8 case to_number(to_char(mon, 'q')) when 1 then 4 when 2 then 1 when 3 then 2 when 4 then 3 end q
9 from yr
10 )
11 select to_char(min(mon), 'mon') min_month,
12 to_char(max(mon), 'mon') max_month
13 from qr
14 where q = 1;
MIN MAX
--- ---
apr jun
SQL>
https://stackoverflow.com/questions/51476082
复制相似问题