IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Erreur ORA-01722 date inferieure ou egale


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut Erreur ORA-01722 date inferieure ou egale
    Bonjour,

    Je suis actuellement sous Oracle et je voudrais effectuer l'opération suivante :
    afficher tous les résultats tel que la date passée en paramètre soit inférieure ou égale à la date d'entrée.

    Mon code sql est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trunc(RS."STORE_DATE", 'DD') <= TO_DATE(?, 'DD-MM-YYYY')
    ? étant le paramètre date au format (dd/mm/aaaa) que je passe à partir d'une fenêtre. Ca me génére une erreur :

    ORA-01722 nombre non valide.

    Par contre, si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trunc(RS."STORE_DATE", 'DD') = TO_DATE(?, 'DD-MM-YYYY')
    ==> j'ai pas d'erreur.

    Est ce que quelqu'un aurait une idée de ce qui ne va pas dans la première requête ?

    Merci.

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Si ça se trouve l'erreur vient d'ailleurs (des données pour les dates inférieures à ton param).
    Poste donc la requête complète.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Salut,

    Merci pour la réponse. En fait, ma requête est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    select
      RS.PAT_LASTNAME as "nom"
      from
      RESOURCE RS
    where
    RS.IDE_ID = 1 and
        (
        (1 = 1) AND
        RS."STORE_SITE_ID" = '1' AND
        trunc(RS."STORE_DATE", 'DD') <= TO_DATE(?, 'DD-MM-YYYY') AND RS.PAT_ID = ?
     
          )
    order by
      1
    Le paramètre pour la date je l'ai déclaré en chaine de caractère que je rentre sous la forme jj/mm/aaaa et le PAT_ID est un entier.
    En fait, ces paramètres que j'écris avec le caractère ? dans le script sql, je les renseigne en utilisant BirtEditor

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Jarod51 Voir le message
    TO_DATE(?, 'DD-MM-YYYY')

    Le paramètre pour la date je l'ai déclaré en chaine de caractère que je rentre sous la forme jj/mm/aaaa
    Il y a incohérence de format
    Si tu renseignes en jj/mm/aaaa, met TO_DATE(?, 'DD/MM/YYYY')
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    salut,

    j'ai essayé cette solution TO_DATE(?, 'DD/MM/YYYY') mais j'ai toujours la même erreur. Du moment que je change le = par un <= dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trunc(RS."STORE_DATE", 'DD') <= TO_DATE(?, 'DD/MM/YYYY') AND RS.PAT_ID = ?
    j'ai l'erreur qui apparait

    Je sais plus trop quoi essayé

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Tu peux donner le desc de ta table ?

    Tu peux essayer en mettant des valeurs en dur (au lieu de ?)
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Du coup, j'ai changé mon approche du problème en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RS.PAT_ID = ?
        AND
        trunc(RS."STORE_DATE", 'DD') > TO_DATE('10-06-2010', 'DD-MM-YYYY')
        AND
        trunc(RS."STORE_DATE", 'DD') < TO_DATE(?, 'DD-MM-YYYY')
    Donc en paramètre je passe la date sous le format par exemple : 15-06-2010

    mais ça me génère une nouvelle erreur : ORA-01843 : ce n'est pas un mois valide

  8. #8
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    T'es sur qu'il n'y a pas un reformatage de ton paramètre ?
    C'est bien un type chaine et pas un type date ?


    Essaye d'exécuter sous sql+ la requête normalement exécutée parce que tu dois avoir une erreur avec BirtEditor (que je ne connais pas)
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  9. #9
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Quel est le type de "STORE_DATE" ? un DATE ou un VACHAR2 ?
    Parce que ton est lié aux enregistrements (avec le = tu ne ne ramènes pas les mêmes enregistrements, voire aucun) pas au paramètre passé.
    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  10. #10
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 814
    Points
    17 814
    Par défaut
    À mon avis le problème vient de l'autre paramètre :
    Je suis sûr que votre ID est un nombre et que vous lui envoyez de la chaîne de caractères.

    Il faut la description de la table et des paramètres que vous lui envoyez.

Discussions similaires

  1. Erreur ORA-01722 sur un Insert
    Par Unsurgent dans le forum Oracle
    Réponses: 2
    Dernier message: 25/02/2011, 13h03
  2. Erreur ORA-01722 lors d'un SELECT
    Par sat478 dans le forum Oracle
    Réponses: 2
    Dernier message: 18/01/2011, 19h59
  3. Erreur ORA-01722 "invalid number"
    Par devbegins dans le forum Débuter
    Réponses: 3
    Dernier message: 23/01/2010, 01h14
  4. erreur ORA-01722 dans une procédure
    Par Lolitaaa dans le forum PL/SQL
    Réponses: 10
    Dernier message: 26/06/2009, 16h01
  5. Réponses: 2
    Dernier message: 27/05/2009, 14h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo