ADD_MONTHS
を使用したアプローチは次のとおりです およびEXTRACT(YEAR FROM ....)
。必要な月数を加算または減算するだけです(年を変更するだけなので、常に12の倍数です)。 TO_CHAR
とは異なり / TO_DATE
ソリューションでは、このアプローチは飛躍日(2月29日)を処理します。一方、日付を2003年2月28日から2012年に変更すると、2月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