Bonjour!
![]()
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...![]()
Bonjour!
![]()
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...![]()
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 : Sélectionner tout - Visualiser dans une fenêtre à part SELECT SYSDATE - 3 FROM DUAL;![]()
Bah à priori,
Si t'es en SQL :
Si t'es en PL/SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT TaVariableDate + NombreDeJours INTO TaVariableDate FROM DUAL;
J'espère que j'ai bien compris la question...
Code : Sélectionner tout - Visualiser dans une fenêtre à part TaVariableDate := TaVariableDate + NombreDeJours;
Avec SQL Server un ajout négatif est un retrait !!!
exemple
SELECT DATEADD(DAY, -3, CURRENT_TIMESTAMP)
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
a quoi correspond "dual"?
Nous avons fait la requête suivante :
Mais il ne reconnait pas dateadd.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part voy_datedebut >= '07-08-04'
En espérant que ça vous aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part voy_datedebut >= TO_DATE('07-08-04','DD-MM-YY')
DUAL est une pseudo tableEnvoyé 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![]()
Partager