web-dev-qa-db-fra.com

Date Oracle - Comment ajouter des années à ce jour

J'ai un champ de date

DATE = 10/10/2010

somme = 4 (ce sont le nombre d'années par calcul)

existe-t-il un moyen d'ajouter quatre ans au 10/10/2010 et de le rendre le 10/10/2014?

27
kalls

Essayez plutôt d'ajouter des mois (12 * nombre d'années). Comme ça-

add_months(date'2010-10-10', 48)
48
sgowd

Utilisez add_months

Exemple:

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

Avertissement
add_months, renvoie le dernier jour du mois résultant si vous saisissez le dernier jour d'un mois pour commencer.

Par conséquent, add_months(to_date('28-feb-2011'),12) renverra le 29 février 2012 en conséquence.

20
Johan

Je pense que vous pouvez utiliser la fonction ADD_MONTHS(). 4 ans, c'est 48 mois, donc:

add_months(DATE,48)

Voici quelques informations sur l'utilisation de la fonction:

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
Dan

Je ne sais pas si j'ai bien compris votre question, mais

select add_months(someDate, numberOfYears * 12) from dual

pourrait faire l'affaire

7
Black

Vous pouvez essayer ceci:

someDate + interval '4' year

[~ # ~] intervalle [~ # ~]

3
Grimmy

Une option de plus en dehors de 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 car il n'y a pas de 29 février 2005, il échoue donc dans les cas d'année bissextile (29 février)

Lisez la documentation pour la même chose

2
SriniV