我的任务是从五个财政季度开始到现在获取数据。对于像我这样的神谕新手来说,这并不容易。我们的财政年度从11月1日开始,所以这带来了另一个维度。无论如何,这段代码似乎工作得很好。只是想我会分享,谁知道呢,也许你会发现一个错误或更好的方法。
很少有观察结果。
-
ADD_MONTHS(sysdate - interval '2' year, -3)
可以简化为sysdate - interval '2-3' year to month
。 -
TRUNC(date)
给出日期输出。所以没有必要在上面使用TO_DATE功能。 - 我认为
ADD_MONTHS(sysdate - interval '2' year, +1)
错了。它应该只是sysdate - interval '2' year
.您可以通过替换来检查系统日期在 Decemeber,date'2013-12-04'
.
简化查询
select trunc(sysdate - interval '2-3' year to month,'Q') as beg_qtr,
trunc(sysdate - interval '2' year, 'Q') - 1 as end_qtr
from dual;
select (TO_DATE(TRUNC(ADD_MONTHS(sysdate - interval '2' year, -3),'Q'),
'DD-MM-YY')) AS BEG_QTR, TRUNC(ADD_MONTHS(sysdate - interval '2' year, +1), 'Q')
-1 AS END_QTR from DUAL