यहां ADD_MONTHS
का उपयोग करने का तरीका दिया गया है और EXTRACT(YEAR FROM ....)
. आप केवल आवश्यक महीनों की संख्या जोड़ते या घटाते हैं (हमेशा 12 का गुणक, क्योंकि आप केवल वर्ष बदल रहे हैं)। TO_CHAR
के विपरीत / TO_DATE
समाधान, यह दृष्टिकोण लीप दिनों (29 फरवरी) को संभालता है। दूसरी ओर, आपको सूचित किया जाता है कि दिनांक 28 फरवरी 2003 से वर्ष 2012 में बदलने से यह 29 फरवरी (ADD_MONTHS
) में बदल जाएगी। महीने के अंतिम दिन को परिणामी महीने के अंतिम दिन में बदल देता है)।
with
inputs as (
select date '2013-03-22' as effective_date,
date '2017-08-14' as point_date
from dual
)
-- end of TEST data (do not include in the solution!)
select effective_date, point_date,
add_months(point_date, 12 * ( extract (year from effective_date) -
extract (year from point_date) )
) as mixed_date
from inputs;
EFFECTIVE_DATE POINT_DATE MIXED_DATE
-------------- ---------- ----------
03/22/2013 08/14/2017 08/14/2013