根据13周(91天)的滚动季度计算当前季度的会计开始日期

k7fdbhmy  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(400)

我正在寻找一个sql解决方案,在oracle开发人员sql的工作,将计算当前季度的开始和结束日期的sysdate的基础上,财政日历开始于2020年2月1日。每个季度固定为13周(91天),而不是3个月,因此每年的会计日历略有不同。
代码将上载到自动报告,不希望每年对其进行调整。本年度会计日历附为示例说明。当前会计日历
我开始沿着这条路往前走,但当我意识到开始日期不能以这种格式正确时,我迷路了。
end解决方案将用于where子句以确定报告日期范围,例如(where report日期介于修改的季度开始和系统日期之间)

select trunc(add_months(add_months(trunc(sysdate,'Y') -1 ,
to_number(to_char(sysdate,'Q')) * 3),-1),'MM') 
start_date,trunc(add_months(add_months(trunc(sysdate,'Y') -1 ,
to_number(to_char(sysdate,'Q')) * 3),+2),'MM')-1 Endd_date,
add_months(trunc(sysdate,'Y') -1 ,to_number(to_char(sysdate,'Q')) * 3) end_date ,
to_char(sysdate,'YYYY - q') qtr from dual

非常感谢您的帮助。

yzckvree

yzckvree1#

以防将来有人遇到同样的情况。在另一个线程中读了固定天数的案例声明后,我想到了这个解决方案。

Select Trunc(sysdate - to_date('02-Feb-2019')), 
Case When Trunc(sysdate - to_date('02-Feb-2019')) > 91 Then to_date('02-Feb-2019') + 
Round( to_number(Trunc(sysdate - to_date('02-Feb-2019'))/91),0) * 91 
Else null End Current_Quarter_Start, 
Case When Trunc(sysdate - to_date('02-Feb-2019')) > 91 Then to_date('02-Feb-2019') + 
( (Round( to_number(Trunc(sysdate - to_date('02-Feb-2019'))/91),0) +1 )* 91)-1 Else null End Current_Quarter_End From Dual

相关问题