मुश्किल हिस्सा तिमाही का आखिरी दिन हो रहा है।
यह समाधान लक्ष्य तिथि से 9 महीने घटाकर और फिर 'Q'
के साथ काट कर सीमा के शुरुआती दिन की गणना करता है मुखौटा जो हमें तिमाही का पहला दिन देता है। फिर हम उस तारीख की गणना फिर से . करते हैं , एक दिन घटाएं फिर बारह महीने जोड़ें और इससे वर्तमान तिमाही का अंतिम दिन मिलता है:
with tgt as ( select date '2019-03-30' as dt from dual
union all select date '2019-02-28' as dt from dual
union all select date '2019-04-01' as dt from dual
)
select trunc(tgt.dt - interval '9' month, 'Q') as range_st,
(trunc(tgt.dt - interval '9' month, 'Q') - 1) + interval '12' month as range_end
from tgt
/
वहाँ एक चिकना समाधान हो सकता है, लेकिन यह मेरे कॉफी ब्रेक का अंत है :)