SELECT ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL-1) ) AS qstart
, ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL) ) -1 AS qend
FROM ( SELECT TO_DATE('&start_date') AS start_date
, TO_DATE('&end_date') AS end_date
FROM DUAL
) PARAM
CONNECT BY ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL) ) -1
<= PARAM.end_date
Aturan untuk params, Anda mungkin perlu menyesuaikan kueri agar sesuai dengan tujuan Anda:
- Jika tanggal_mulai bukan awal kuartal yang tepat, maka secara efektif menggunakan kuartal yang berisi tanggal mulai.
- Jika tanggal_akhir bukan akhir kuartal yang tepat, maka kita berakhir pada kuartal yang berakhir SEBELUM tanggal_akhir (bukan yang berisi tanggal akhir).