Ajouter 2 dates en PL sql + add_years

Ajouter 2 dates en PL sql + add_years - SQL/NoSQL - Programmation

Marsh Posté le 03-11-2005 à 10:15:42    

Bonjour,
 
je dois faire un calcul avec des objets date et un objet number qui est cencé etre des années
 
Procedure  CALCUL_DATE ( MyDateTotal IN OUT date, MyDate1 IN date, MyDate2 IN date, MyAnnee IN number) IS
Begin
  MyDateTotal := MyDate1 + MyDate2;
  MyDateTotal := add_years(MyDateTotal, MyAnnee);
end;
 
pour le add_years il me met "PLS-00201: identificateur 'ADD_YEARS' doit être déclaré" alors qu'avec un add_months ca compile  :??:  
pour l'addition avec le + il me met "PLS-00306: numéro ou types d'arguments erronés dans appel à '+'"  
 
merci pour votre aide  :wahoo:  
 

Reply

Marsh Posté le 03-11-2005 à 10:15:42   

Reply

Marsh Posté le 03-11-2005 à 10:45:45    

Les dates, ça ne s'additionne pas !
 
Par contre on peut ajouter / retirer un nombre de jours / mois / années à une date.
 
Pour ajouter / retirer des années :
 
ADD_MONTHS(maDate, nombreAnnées * 12)
 
Explique ce que tu voulais faire en additionnant 2 dates.

Reply

Marsh Posté le 03-11-2005 à 11:27:17    

merci pour le ADD_MONTHS(maDate, nombreAnnées * 12)  j'y avais meme pas pensé!! ;)
 
sinon, en faite je ne veut pas faire d'addition, la encore je m'y prend mal. sorry et merci encore pour vos réponses

Reply

Marsh Posté le 03-11-2005 à 11:37:33    

   dateBuff1 := ADD_MONTHS(MyDate1 , MyAnnee * 12);
    dateBuff2 := ADD_MONTHS(MyDate2 , MyAnnee * 12) ;
 
avec MyDateTotal := la date la plus proche, entre dateBuff1 et dateBuff2, de sysdate
 
c'ets pour ca que je cherchais a faire une addition.
 
la je cherche un truc du genre DATEDIFF ou MONTH_BETWEEN

Reply

Marsh Posté le 03-11-2005 à 11:49:44    

Date1 - Date2 renvoie l'écart (en jours) entre 2 dates. Il peut y avoir des décimales :)
 
Tu peux faire quelque chose du genre :
 

Code :
  1. PROCEDURE CALCUL_DATE(MyDateTotal IN OUT DATE, MyDate1 IN DATE, MyDate2 IN DATE, MyAnnee IN NUMBER) IS
  2.   tmpDate1 DATE;
  3.   tmpDate2 DATE;
  4. BEGIN
  5.   tmpDate1 := ADD_MONTHS(MyDate1, MyAnnee*12);
  6.   tmpDate2 := ADD_MONTHS(MyDate2, MyAnnee*12);
  7.   IF (ABS(tmpDate1 - SYSDATE) < ABS(tmpDate2 - SYSDATE)) THEN
  8.     MyDateTotal := tmpDate1;
  9.   ELSE
  10.     MyDateTotal := tmpDate2;
  11.   END IF;
  12. END;

Reply

Marsh Posté le 03-11-2005 à 11:57:44    

encore merci beegee pour ton aide. Si tout le monde pouvait etre comme toi, on vivrait bien plus heureux j'ai l'impression....

Reply

Marsh Posté le 03-11-2005 à 12:03:06    

Tout le monde aide ici ... mais il est vrai que j'ai franchement rien à faire au boulot en ce moment :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed