p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre éprouvé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    mai 2004
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : mai 2004
    Messages : 697
    Points : 405
    Points
    405

    Par défaut [11g] Conversion date numérique en date -ORA-01840

    Bonjour,
    je lis un champ au format numérique Number(8).
    Les valeurs de ce champ représentent des dates, par exemple 19941231.

    Souhaitant effectuer des comparaison entre dates, j'essaie de convertir ce champ en date Oracle avec le requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select distinct to_date(to_char(MyTable.MyDate),'YYYYMMDD') from MyTable;
    J'obtiens l'erreur suivante : ORA-01840: valeur entrée pas assez longue pour le format de la date

    J'ai vérifié les valeurs possibles de MyDate, il n'y a pas de valeur nulle, les valeurs pour le mois vont de 1 à 12 et celles du jour vont de 1 à 31.

    Si quelqu'un a une idée, je suis preneur.

    Merci.

    "Le sage ne dit pas ce qu'il sait alors que le sot ne sait pas ce qu'il dit"

  2. #2
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet
    Inscrit en
    juin 2007
    Messages
    1 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Bâtiment

    Informations forums :
    Inscription : juin 2007
    Messages : 1 245
    Points : 2 025
    Points
    2 025

    Par défaut

    Essaie de formater la chaine avant de transformer en date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DISTINCT to_date(to_char(MyTable.MyDate,'FM00000000'),'YYYYMMDD') FROM MyTable;
    Le probléme vient surement de l'année, et pas du mois ni du jour !
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 10.2.0.4 (RAC) - Forms6i patch 17 - Toad 12 - sharePoint 2010

  3. #3
    Membre éprouvé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    mai 2004
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : mai 2004
    Messages : 697
    Points : 405
    Points
    405

    Par défaut

    Merci Philippe,
    maintenant j'obtiens l'erreur : ORA-01843: ce n'est pas un mois valide


    J'ai essayé de joué sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter session set nls_date_format='YYYYMMDD';
    Je conserve l'erreur ORA-01843: ce n'est pas un mois valide.

    Bon enfin j'avance, je vais y arriver.

    "Le sage ne dit pas ce qu'il sait alors que le sot ne sait pas ce qu'il dit"

  4. #4
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet
    Inscrit en
    juin 2007
    Messages
    1 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Bâtiment

    Informations forums :
    Inscription : juin 2007
    Messages : 1 245
    Points : 2 025
    Points
    2 025

    Par défaut

    C'est surement que les mois (ou les jours) n'ont pas le 0 significatif !
    EX 2014112 pour 20140112
    Aucune solution si ce n'est detecter les erreurs successivement sur les jours, les mois et les années auparavant !
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 10.2.0.4 (RAC) - Forms6i patch 17 - Toad 12 - sharePoint 2010

  5. #5
    Expert Confirmé Sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2007
    Messages
    4 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2007
    Messages : 4 945
    Points : 9 810
    Points
    9 810

    Par défaut

    Cherchez les valeurs de la colonne en question ayant une longueur inférieure à 7 caractères.

  6. #6
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet
    Inscrit en
    juin 2007
    Messages
    1 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Bâtiment

    Informations forums :
    Inscription : juin 2007
    Messages : 1 245
    Points : 2 025
    Points
    2 025

    Par défaut

    Citation Envoyé par mnitu Voir le message
    Cherchez les valeurs de la colonne en question ayant une longueur inférieure à 7 caractères.
    Ou plutot les NOMBRES inférieurs à 10000000 !
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 10.2.0.4 (RAC) - Forms6i patch 17 - Toad 12 - sharePoint 2010

  7. #7
    Membre éprouvé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    mai 2004
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : mai 2004
    Messages : 697
    Points : 405
    Points
    405

    Par défaut

    Merci pour vos idées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select distinct length(to_char(MyVar))from MyTable;
    renvoie un seul enregistrement de valeur 8.

    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select MyVar from MyTable where MyTable.MyVar<10000000;
    ne renvoie aucun enregistrement.
    "Le sage ne dit pas ce qu'il sait alors que le sot ne sait pas ce qu'il dit"

  8. #8
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet
    Inscrit en
    juin 2007
    Messages
    1 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Bâtiment

    Informations forums :
    Inscription : juin 2007
    Messages : 1 245
    Points : 2 025
    Points
    2 025

    Par défaut

    Alors il faut découper la chaine en 4 troncons (substr) année, mois,jour et mois/jour puis voir ou ca pêche (du genre jour= 30 pour le mois 02 ou mois et jour inversé !
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 10.2.0.4 (RAC) - Forms6i patch 17 - Toad 12 - sharePoint 2010

  9. #9
    Membre éprouvé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    mai 2004
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : mai 2004
    Messages : 697
    Points : 405
    Points
    405

    Par défaut

    Impeccable, j'ai trouvé, il y avait un 31 Septembre !

    La syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     to_date(to_char(MyTable.MyVar,'FM00000000'),'YYYYMMDD')
    va bien et le code suivant fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    alter session set nls_date_format='YYYYMMDD';
    select distinct to_date(to_char(MyTable.MyVar,'FM00000000'),'YYYYMMDD')
         from MyTable
         where to_number(substr(to_char(MyTable.MyVar),5,2)) <>9
         and to_number(substr(to_char(MyTable.MyVar),7,2)) <>31
    ;
    Merci beaucoup !

    "Le sage ne dit pas ce qu'il sait alors que le sot ne sait pas ce qu'il dit"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] convertir date texte en date numérique
    Par cgabidj dans le forum Access
    Réponses: 7
    Dernier message: 25/07/2014, 09h49
  2. Reformater date française en date numérique
    Par Toiine dans le forum Fonctions
    Réponses: 6
    Dernier message: 25/06/2012, 17h12
  3. Transformation de dates numériques en date string
    Par mamour71 dans le forum MATLAB
    Réponses: 6
    Dernier message: 11/06/2012, 14h23
  4. [XL-2007] couleur cellule date differente si date passee, ou date du jour
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/03/2011, 08h24
  5. Conversion de numérique en date
    Par cuterate dans le forum Access
    Réponses: 2
    Dernier message: 20/03/2008, 15h17

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