Oracle Date - comment ajouter années à date

j'ai un champ date

DATE = 10/10/2010

somme = 4 (il s'agit du nombre d'années par calcul)

est-il possible d'ajouter quatre ans à 10/10/2010 et de le rendre 10/10/2014?

24
demandé sur APC 2012-02-16 18:41:59

6 réponses

essayez plutôt d'ajouter des mois (12 * Nombre d'années). Comme celui-ci

add_months(date'2010-10-10', 48)
43
répondu sgowd 2017-07-29 05:50:54

Utiliser add_months

Exemple:

SELECT add_months( to_date('10-OCT-2010'), 48 ) FROM DUAL;

Avertissement

add_months, retourne le dernier jour du mois obtenu si vous entrez le dernier jour d'un mois pour commencer.

add_months(to_date('28-feb-2011'),12) retour 29-fév-2012.

18
répondu Johan 2012-02-16 14:47:45

je crois que vous pourriez utiliser le ADD_MONTHS() fonction. 4 ans, c'est 48 mois, donc:

add_months(DATE,48)

http://www.techonthenet.com/oracle/functions/add_months.php

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1157035034361

8
répondu Dan 2012-02-16 14:48:11

je ne suis pas sûr, si j'ai bien compris Votre question, mais

select add_months(someDate, numberOfYears * 12) from dual

pourrait faire l'affaire

6
répondu Black 2012-02-16 14:48:34

Vous pouvez essayer ceci:

someDate + interval '4' year

intervalle

3
répondu Grimmy 2013-01-28 09:44:32

une option de plus à part ADD_MONTHS

SELECT
      SYSDATE,
      SYSDATE
      + TO_YMINTERVAL ( '1-0' )
FROM
      DUAL;


SYSDATE   SYSDATE+TO_YMINTERVAL('1-0')
--------- ----------------------------
29-OCT-13 29-OCT-14                   
1 row selected.


SELECT
      SYSDATE,
      SYSDATE
      + TO_YMINTERVAL ( '2-0' )
FROM
      DUAL;


SYSDATE   SYSDATE+TO_YMINTERVAL('2-0')
--------- ----------------------------
29-OCT-13 29-OCT-15                   
1 row selected.

SELECT
      TO_DATE ( '29-FEB-2004',
              'DD-MON-YYYY' )
      + TO_YMINTERVAL ( '1-0' )
FROM
      DUAL

   *
Error at line 4

ORA-01839: date not valid for month specified

mais le dernier est illégal puisqu'il n'y a pas de 29ème jour de février en 2005, donc il échoue sur les cas de l'année bissextile (29 février)

Lire le documentation pour la même

2
répondu SriniV 2017-09-14 14:02:43