Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/06/2008, 10h25   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 13
Points : 13
Par défaut Requête avec un intervalle de date

Bonjour,

Je suis actuellement en projet dans mon école, et je cherche a faire une requete sur un intervalle de date. Les dates sont stocké au format date sur une bdd oracle.

ma requete ressemble à ca :
Code :
1
2
 
SELECT * FROM workshop1.facture WHERE acquittee = 0 AND date_facture BETWEEN  SYSDATE - NUMTODSINTERVAL(3,'MONTH') AND SYSDATE - NUMTODSINTERVAL(2,'MONTH');
je cherche à sélectionner les enregistrement compris entre aujourd'hui-3mois et aujourd'hui -2mois.

Cependant il me repond
Code :
1
2
ERREUR à la ligne 1 :
ORA-01760: argument interdit pour la fonction
J'attend votre aide avec impatience.

Merci d'avance.
heruwenli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 10h42   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Code :
SELECT * FROM workshop1.facture WHERE acquittee = 0 AND date_facture BETWEEN  ADD_MONTHS(SYSDATE, -3) AND ADD_MONTHS(SYSDATE, -2);
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 10h44   #3
Membre expérimenté
 
Inscription : juillet 2007
Messages : 495
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2007
Messages : 495
Points : 585
Points : 585
Je ne connaissais pas la fonction NUMTODSINTERVAL : après consultation de la doc, sur l'idée ça semble correspondre à ce que tu cherches mais ça n'accepte que les valeurs DAY, HOUR, MINUTE, SECOND. Pas de MONTH possible donc :
http://sheikyerbouti.developpez.com/pl_sql/?page=Chap3

Par contre, tu peux utiliser la fonction ADD_MONTHS qui s'y prête très bien :
Code :
1
2
 
SELECT * FROM workshop1.facture WHERE acquittee = 0 AND date_facture BETWEEN  ADD_MONTHS(SYSDATE, -3) AND ADD_MONTHS(SYSDATE, -2);
__________________
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !
dgi77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 10h53   #4
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
Code :
1
2
3
4
SELECT * FROM workshop1.facture 
WHERE acquittee = 0 AND 
date_facture BETWEEN  SYSDATE - NUMTOYMINTERVAL(3,'MONTH') 
AND SYSDATE - NUMTOYMINTERVAL(2,'MONTH');
mais attention, 31-Mai -08 - (3 mois) = 31-Févr.-08 !!! d'où l'avantage d'employer ADD_MONTHS
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 12h46   #5
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 13
Points : 13
Merci beaucoup,

J'ai utilisé les "NUMTODSINTERVAL". c'est pour un projet à mon école, je ne retoucherais plus jamais a Oracle donc le probleme de fevrier ou d'un autre mois ne me pose pas de probleme :d!!!

Encore merci
heruwenli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h49.


 
 
 
 
Partenaires

Hébergement Web