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-01843: ce n'est pas un mois valide


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Erreur ORA-01843: ce n'est pas un mois valide
    Bonjour a tous,
    excusez moi de vous solliciter mais j'ai un problème avec un format de date sous oracle 10g express que je n'arrive malheureusement pas a resoudre tout seul.

    Je ne peux inserer de date dans ma base.

    J'ai récupérer la valeur du format de date a l'aide de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from NLS_DATABASE_PARAMETERS ;
    La variable NLS_DATE_FORMAT est à DD-MON-RR.

    Voici la table concernée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE Vehicule(
    	NumImmat NUMBER(5) CONSTRAINT PKVeh PRIMARY KEY,
    	KmDerniereRev NUMBER(10) NOT NULL,
    	IdClasse NUMBER(5) REFERENCES Classe(IdClasse) ON DELETE CASCADE,
    	IdAgence NUMBER(5) REFERENCES Agence(IdAgence) ON DELETE CASCADE,
    	ValeurVehicule NUMBER(10) NOT NULL,
    	KmTotal NUMBER(10) NOT NULL,
    	DateDerniereRev DATE NOT NULL
    );
    Et enfin, voici l'insert associé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into vehicule values(1,0,1,1,200000,0,to_date('01-JAN-99','DD-MON-RR'));
    Je ne comprends pas d'où peut venir l'erreur, peut-être faut-il changer le format de date car des erreurs se manifestent avec ce type de format ???

    Il ne me reste malheureusement que très peu de temps pour régler le problème, c'est pour cela que je m'adresse à vous.

    En attente de votre réponse veuillez recevoir toute ma gratitude,

    Coldyo

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 77
    Points : 53
    Points
    53
    Par défaut
    Ben jcomprend pas normalement oracle reçoit des dates de type :
    - jour-mois-année

    sous forme :
    10-FEB-99 pour exemple

    me souvient qu'une de mes base prennait des type du genre :
    10-october-99

    essaye de configurer les types dates,dans ta base de donnée meme si cela est possible.

    dsl de ne pouvoir t'aiguiller plus

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 316
    Points : 388
    Points
    388
    Par défaut
    quitte a donnée le format de date autant le faire avec un format plus facile
    a utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    to_date('01/01/1999','DD/MM/RRRR')

  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
    Regarde aussi le NLS_LANG pour voir si tu es en français, anglais, etc...

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci pour votre aide mais j'ai trouvé.

    Le problème était que le contenu de la variable NLS_DATE_FORMAT ne correspondait pas avec le format de date voulu par oracle.

    Merci encore...

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par Coldyo
    Merci pour votre aide mais j'ai trouvé.
    Eh bien moi je ne comprends toujours pas :
    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
    10g SOC5> show parameter nls_lang
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_language                         string      AMERICAN
     
    10g SOC5> select to_char( to_date('01-JAN-RR', 'DD-MON-RR') , 'DD/MM/YY') from dual;
    select to_char( to_date('01-JAN-RR', 'DD-MON-RR') , 'DD/MM/YY') from dual
                            *
    ERREUR à la ligne 1 :
    ORA-01843: ce n'est pas un mois valide
     
    10g SOC5> alter session set nls_date_format = 'DD-MON-RR';
     
    Session modifiée.
     
    10g SOC5> select to_char( to_date('01-JAN-RR', 'DD-MON-RR') , 'DD/MM/YY') from dual;
    select to_char( to_date('01-JAN-RR', 'DD-MON-RR') , 'DD/MM/YY') from dual
                            *
    ERREUR à la ligne 1 :
    ORA-01843: ce n'est pas un mois valide
    Qui peut m'expliquer pourquoi j'obtiens ce résultat ?

  7. #7
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Ouaip c'est bizarre, tu devrais plutôt sortir avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORA-01841: (full) year must be between -4713 and +9999, and not be 0
    non ?

    Et en mettant une année correcte c'est bon ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select to_char( to_date('01-JAN-07', 'DD-MON-RR') , 'DD/MM/YY') from dual;

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par chrifo
    Et en mettant une année correcte c'est bon ?
    Excellent !
    Je n'ai même pas fait exprès de mettre une date incorrecte (inexistante).
    Avec une date cohérente, le résultat est le même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    10g SOC5> alter session set nls_date_format = 'DD-MON-RR';
     
    Session modifiée.
     
    10g SOC5> select to_char( to_date('01-JAN-07', 'DD-MON-RR') , 'DD/MM/YY') from dual;
    select to_char( to_date('01-JAN-07', 'DD-MON-RR') , 'DD/MM/YY') from dual
                            *
    ERREUR à la ligne 1 :
    ORA-01843: ce n'est pas un mois valide

  9. #9
    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
    C'est ta langue qui n'est pas bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ALTER SESSION SET nls_language = 'RUSSIAN' 
     
    SELECT TO_CHAR( TO_DATE('01-JAN-07', 'DD-MON-RR') , 'DD/MM/YY') FROM dual
    => Not a valid month
     
    ALTER SESSION SET nls_language = 'FRENCH' 
     
    SELECT TO_CHAR( TO_DATE('01-JAN-07', 'DD-MON-RR') , 'DD/MM/YY') FROM dual
    => Ok
     
    ALTER SESSION SET nls_language = 'ENGLISH' 
     
    SELECT TO_CHAR( TO_DATE('01-AVR-07', 'DD-MON-RR') , 'DD/MM/YY') FROM dual
    => Not a valid month

Discussions similaires

  1. "tOracleInput, ORA-01843: ce n'est pas un mois valide"
    Par SGASSAMA dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 03/12/2009, 16h40
  2. FOrms 10g : Ceci n'est pas un mois valide
    Par lolafrite dans le forum Forms
    Réponses: 4
    Dernier message: 01/02/2008, 10h35
  3. Réponses: 5
    Dernier message: 23/11/2006, 15h13
  4. [Struts][Tomcat] ERREUR : le nom jdbc n'est pas lié à ce contexte.
    Par ultracoxy dans le forum Tomcat et TomEE
    Réponses: 23
    Dernier message: 15/06/2006, 17h54
  5. [HTML] Erreur (38/4) : "ENCTYPE" n'est pas autoris
    Par boteha dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 05/11/2004, 22h19

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