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

Oracle Discussion :

To_Date() avec un number


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 1
    Par défaut To_Date() avec un number
    Bonjour,

    J'essaye de faire une procédure d'archivage et je dois donc check les dates de mes tables ...
    Certaines d'entre elles ont une date 'ANNEE' au format number(4,0).

    Le problème est que j'essaye de comparer ce champ ANNEE avec une date (au format date) passé en paramètre de ma procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FROM XXXX WHERE to_date('01/01/' || ANNEE) <= inDAT_ARCHIVE ;
     
     
    Erreur(248,72): PL/SQL: ORA-00932: types de données incohérents ; attendu : DATE ; obtenu : NUMBER
    (Fonctionne si ANNEE est un varchar2)

    Une idée ?

    Merci d'avance !!

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Et oui, to_date utilise deux arguments de type chaîne. Ici vous n'utilisez qu'un seul argument, le second est déterminé d'après les critères NLS de votre session / database, mais c'est une pratique à proscrire.

    Deux solutions s'offrent à vous.

    1) Convertir votre nombre en chaîne et utilisez le format adéquat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE to_date('01/01/' || to_char(ANNEE), 'dd/mm/yyyy') <= inDAT_ARCHIVE;
    2) Utilisez la fonction extract, qui renvoie un nombre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ANNEE <= extract(year from inDAT_ARCHIVE);
    Cette seconde solution sera certainement la plus véloce.

Discussions similaires

  1. [Struts-Layout] problème avec layout :number
    Par john_wili dans le forum Struts 1
    Réponses: 0
    Dernier message: 10/02/2009, 17h40
  2. arrondis faux avec QString::number
    Par Somato dans le forum Débuter
    Réponses: 11
    Dernier message: 04/12/2008, 08h57
  3. La somme d'une date avec un number
    Par amine1980 dans le forum PL/SQL
    Réponses: 4
    Dernier message: 02/12/2008, 17h25
  4. [ADO] Problème avec OracleType.Number
    Par Mast3rMind dans le forum C#
    Réponses: 1
    Dernier message: 16/08/2007, 19h46
  5. Pb de jointure externe avec un number
    Par mch_27 dans le forum Oracle
    Réponses: 2
    Dernier message: 07/03/2006, 15h33

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