我们都知道在oracle取当前日期所属季度时,我们通常的做法是简单的使用to_char(sysdate,'q'),即可以得到当前日期所属的季度,,忽然想到通示使用ntile(n)应该也可以实现,动手实践一下,效果还不错! 那么如何通过ntile(n)这个函数来取得当前日期所属的季度呢?
(1) 首先我们需要无中生有的生成12条记录,每条记录查询结果为月份的值;
(2) 使用ntile(4)将结果集分成4个片断;
(3) 那么当前日期落在第几个片断里,即是经几季度
整体的取季度的sql如下:
select quarter from (select ntile(4) over(order by rownum) quarter ,to_number(to_char(to_date('2011-01-01','yyyy-mm-dd'), 'MM')) m,rownum rn
from dual
connect by level <= 12) cc
where cc.m = rn;