Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SQL-Erstellungsdatum aus Teilen

Hier ist ein Ansatz mit ADD_MONTHS und EXTRACT(YEAR FROM ....) . Sie addieren oder subtrahieren einfach die benötigte Anzahl an Monaten (immer ein Vielfaches von 12, da Sie nur das Jahr ändern). Im Gegensatz zu TO_CHAR / TO_DATE Lösungen behandelt dieser Ansatz Schalttage (29. Februar). Beachten Sie andererseits, dass eine Änderung des Datums vom 28. Februar 2003 auf das Jahr 2012 es auf den 29. Februar (ADD_MONTHS) ändert ändert den letzten Tag eines Monats auf den letzten Tag des resultierenden Monats).

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