sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL Opret dato fra dele

Her er en tilgang, der bruger ADD_MONTHS og EXTRACT(YEAR FROM ....) . Du tilføjer eller trækker blot det nødvendige antal måneder (altid et multiplum af 12, da du kun ændrer året). I modsætning til TO_CHAR / TO_DATE løsninger, håndterer denne tilgang skuddage (29. februar). På den anden side skal du være opmærksom på, at ændring af datoen fra 28. februar 2003 til år 2012 vil ændre den til 29. februar (ADD_MONTHS ændrer den sidste dag i en måned til den sidste dag i den resulterende måned).

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


  1. Sådan tilføjer du AM/PM til en tids- eller datotidsværdi i MariaDB

  2. Hvorfor \G i SELECT * FROM tabelnavn\G?

  3. Hvordan udskriver man 1 til 10 uden at bruge Loop i PL/SQL?

  4. Er der et Spring Batch 3-opgraderingsscript til MySQL?