1 --年初,年末
 2 select trunc(sysdate,'yyyy') from dual;
 3 select add_months(trunc(sysdate,'yyyy'),12) - 1 from dual;
 4 
 5 --月初,月末
 6 select trunc(sysdate,'month') from dual;
 7 select add_months(trunc(sysdate,'month'),1) -1 from dual;
 8 
 9 --季度初,季度末
10 select trunc(sysdate,'q') from dual;
11 select add_months(trunc(sysdate,'q'),3)-1 from dual;

 

如果需要上一年的年末,只需要年初减一天;下一年的年初,只需要年末加一天。

对应的,月末前一天,月末后一天,季度初前一天,季度末后一天,都只需要加一天或者减一天。