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 :

probleme avec to_date sous oracle


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Par défaut probleme avec to_date sous oracle
    salut voila je travaille sur oracle 9i , j'utilise toad j'essaye de convertir une date que je reçois sous la forme Sep 16 2002 voila la requete
    SELECT TO_DATE('Sep 16 2002','MON DD YYYY') FROM DUAL
    sa me retourne une erreur ORA-01843: not a valid month
    une idée???

  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
    Sep n'est pas la valeur courte française du mois, c'est la valeur courte américaine, il faut donc le préciser dans votre fonction (je suppose que votre base est configurée en français mais ce n'est peut-être pas le cas : préciser le format de langue dans la fonction vous affranchi de ce genre de problème).

    De plus comme il y a écrit Sep et non pas SEP, il faut utiliser le format Mon et non pas MON.

    Bref, ceci fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT
        TO_DATE('Sep 16 2002', 'Mon DD YYYY', 'NLS_DATE_LANGUAGE = AMERICAN')
    FROM DUAL

  3. #3
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Par défaut
    Merci ça marche ;-)

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    SEP et sep c'est pareil.


    De plus, sep c'est bien la valeur de septembre en Français dans Oracle 9i.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> select to_date('Sep 16 2002','MON DD YYYY','NLS_DATE_LANGUAGE=french') FROM DUAL
    TO_DATE('
    ---------
    16-SEP-02
     
    SQL> select to_char(date '2002-09-16','MON DD YYYY','NLS_DATE_LANGUAGE=french') FROM DUAL
    TO_CHAR(DAT
    -----------
    SEP 16 2002
    (toad + oracle 9i)

    Bon, ça a changé en 10g
    Ils sont fous ces gaulois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SQL> select to_date('Sep 16 2002','MON DD YYYY','NLS_DATE_LANGUAGE=french') FROM DUAL
    select to_date('Sep 16 2002','MON DD YYYY','NLS_DATE_LANGUAGE=french') FROM DUAL
                                                                                *
    Error at line 1
    ORA-01843: not a valid month
     
    SQL> select to_char(date '2002-09-16','MON DD YYYY','NLS_DATE_LANGUAGE=french') FROM DUAL
    TO_CHAR(DATE'
    -------------
    SEPT. 16 2002

  5. #5
    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
    SEP et sep c'est pareil.
    Je suis à peu près certain que non.
    Je n'ai pas de BDD sous la main, mais je l'avais vérifié hier quand je cherchais le format (c'était sur une 11g celà dit).
    Je suis certain que les trois requêtes suivantes donnent un résultat différent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select
        to_char(sysdate, 'MON DD YYYY') as "MON",
        to_char(sysdate, 'Mon DD YYYY') as "Mon",
        to_char(sysdate, 'mon DD YYYY') as "mon"
    from dual
    Résultat que j'attendrais (avec peut-être un point après mars) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MON            Mon             mon
    MARS 13 2009   Mars 13 2009    mars 13 2009
    Il existe peut-être un paramètre pour ça ?

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    sep et SEP, c'est pareil dans TO_DATE. Avec TO_CHAR, c'est toi qui choisis la casse.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/02/2010, 08h35
  2. Probleme avec dbstart sous Oracle 10.2.0.1.0 Unix
    Par smooncef dans le forum Import/Export
    Réponses: 11
    Dernier message: 09/01/2008, 17h25
  3. Probleme avec dbms_scheduler sous Oracle 10.2.0.1.0
    Par edi@csb.nc dans le forum SQL
    Réponses: 2
    Dernier message: 08/10/2006, 23h22
  4. Problème avec GLUT sous borland c++ builder X
    Par hiko-seijuro dans le forum GLUT
    Réponses: 1
    Dernier message: 04/11/2004, 12h47
  5. Problème avec phpize sous debian woody
    Par nipepsi dans le forum Debian
    Réponses: 3
    Dernier message: 09/09/2004, 11h54

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