sql >> Database >  >> RDS >> Oracle

Oracle SQL-aanmaakdatum van onderdelen

Hier is een benadering met behulp van ADD_MONTHS en EXTRACT(YEAR FROM ....) . Je telt eenvoudig het benodigde aantal maanden op of trekt er vanaf (altijd een veelvoud van 12, aangezien je alleen het jaartal verandert). In tegenstelling tot de TO_CHAR / TO_DATE oplossingen, behandelt deze aanpak schrikkeldagen (29 februari). Houd er echter rekening mee dat het wijzigen van de datum van 28 februari 2003 in het jaar 2012 deze zal veranderen in 29 februari (ADD_MONTHS verandert de laatste dag van een maand in de laatste dag van de resulterende maand).

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. SQL een-op-veel-relatie - Hoe rijen SELECTEREN op basis van meerdere op-veel-eigenschappen?

  2. * weergeven in een tabel

  3. Snaren op de juiste manier splitsen - of de op één na beste manier

  4. Union-query's uit verschillende databases in Laravel Query Builder