SELECT sn AS 季度,
(sn - 1) * 3 + 1 AS 开始月份,
add_months(年, (sn - 1) * 3) AS 开始日期,
add_months(年, sn * 3) - 1 AS
FROM (SELECT trunc(sysdate,'yyyy') AS 年, LEVEL AS sn FROM dual CONNECT BY LEVEL <= 4);
-------------------------------------------------------------------------------------------------------------------------------
季度 开始月份 开始日期 结束日期
1 1 1 2018-01-01 2018-03-31
2 2 4 2018-04-01 2018-06-30
3 3 7 2018-07-01 2018-09-30
4 4 10 2018-10-01 2018-12-31