Bonjour!
:roll:
Je souhaite retirer et ajouter 3 jours à une date. Je ne trouve pas comment faire. J'ai vu qu'il existe la fonction "next_day" mais je n'ai pas trouvé d'autres solutions qui marchent.
Merci de m'aider... :wink:
Version imprimable
Bonjour!
:roll:
Je souhaite retirer et ajouter 3 jours à une date. Je ne trouve pas comment faire. J'ai vu qu'il existe la fonction "next_day" mais je n'ai pas trouvé d'autres solutions qui marchent.
Merci de m'aider... :wink:
quel SGBD ?
sur sql server il existe la commande dateadd(partie_date,nombre,date) pour rajouter un nombre de jour à une date donnée, mais je n'ai pas truvé d'équivalent pour retrancher un nombre de jours....
datediff quant à lui ne semble être valable que pour soustraire 2 dates données.
Dans un Select, un Procédure stockée ?
Dans Oracle, SQL Server, MySQL ?
On travaille sur Oracle, on va tester ta fonction pour rajouter des jours.
il suffit de faire date - x où x est exprimé en nombre de jour ;)
-> 10/04/04, il a bien enlevé 3 jours... c'est pas plus compliqué que ça :)Code:SELECT SYSDATE - 3 FROM DUAL;
Bah à priori,
Si t'es en SQL :
Si t'es en PL/SQL :Code:
1
2
3 SELECT TaVariableDate + NombreDeJours INTO TaVariableDate FROM DUAL;
J'espère que j'ai bien compris la question...Code:TaVariableDate := TaVariableDate + NombreDeJours;
Avec SQL Server un ajout négatif est un retrait !!!
exemple
SELECT DATEADD(DAY, -3, CURRENT_TIMESTAMP)
a quoi correspond "dual"?
Nous avons fait la requête suivante :
Mais il ne reconnait pas dateadd.Code:
1
2
3
4
5
6 select dest_ville,pays_libel, voy_prix, voy_datedebut,voy_datefin, hot_nom From voyage v, destination d, pays p, hotel h where (voy_datedebut>=07-08-04or (voy_datedebut<=dateadd(DAY,3,07-08-04)) )and v.dest_num=d.dest_num and v.hot_num=h.hot_num and d.pays_num=p.pays_num ;
Ca devrait fonctionner
Par contre la comparaison :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 SELECT dest_ville, pays_libel, voy_prix, voy_datedebut, voy_datefin, hot_nom FROM voyage v, destination d, pays p, hotel h WHERE ( voy_datedebut >= '07-08-04' OR ( voy_datedebut <= TO_DATE('07-08-04','DD-MM-YY') + 3 ) ) AND v.dest_num=d.dest_num AND v.hot_num=h.hot_num AND d.pays_num=p.pays_num;
Ne me parait pas approprié car vous comparez un champ DATE avec une chaine de caractère, et ça peut vous amener des supprises. Essayez plutôt :Code:voy_datedebut >= '07-08-04'
En espérant que ça vous aideCode:voy_datedebut >= TO_DATE('07-08-04','DD-MM-YY')
DUAL est une pseudo table ;)Citation:
Envoyé par kurtc
En fait c'est une table vide : sans ligne ni colonne qui sert juste comme support pour les requêtes SQL qui font appel à des fonctions ou variables non-basés comme SYSDATE ;)
ça y est ça marche. Super merci!!!!! :ave: :merci: