sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL Skapa datum från delar

Här är ett tillvägagångssätt som använder ADD_MONTHS och EXTRACT(YEAR FROM ....) . Du lägger helt enkelt till eller subtraherar det antal månader som behövs (alltid en multipel av 12, eftersom du bara ändrar år). Till skillnad från TO_CHAR / TO_DATE lösningar hanterar detta tillvägagångssätt skottdagar (29 februari). Å andra sidan, kom ihåg att om du ändrar datumet från 28 februari 2003 till år 2012 kommer det att ändras till 29 februari (ADD_MONTHS ändrar den sista dagen i en månad till den sista dagen i den resulterande månaden).

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. Problem med Apache i Xampp efter flera Apache-installationer

  2. Prestanda överraskningar och antaganden:GROUP BY vs. DISTINCT

  3. Hur kan jag hämta de senaste 12 månaderna från det aktuella datumet PLUS extra dagar till den första i den senaste månaden

  4. Npgsql-anslutning med ssl-certifikat i .net core webbapi