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 :

ORA-01861: literal does not match format string et NLS_DATE


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Points : 73
    Points
    73
    Par défaut ORA-01861: literal does not match format string et NLS_DATE
    Bonjour

    J'ai une requête qui fonctionne sur une base de test et qui viande sur une base de recette, voici le code qui pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_date('01' || to_char(add_months(sysdate,1),'MMYYYY'))
    Cela provoque une erreur ORA-01861: literal does not match format string
    dûe à des paramétrages NLS différents apparement...

    Savez-vous ce que je dois modifier dans la requête sachant que je ne peux pas la lancer dans l'environnement qui plante ?

    J'ai regardé dans des docs et fait des recherches sur le forum mais je n'ai pas trouvé ( ou compris ) la méthode à suivre

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Que donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT to_char(add_months(sysdate,1)) FROM dual;
    ?

  3. #3
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Bonjour,

    Regardes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SQL> select '01' || to_char(add_months(sysdate,1),'MMYYYY'), to_date('01' || to_char(add_months(sysdate,1),'MMYYYY'), 'DDMMYYYY')
      2  from   dual;
     
    '01'||TO TO_DATE(                                                               
    -------- --------                                                               
    01102004 01/10/04
    C'est parce que '01' || to_char(add_months(sysdate,1),'MMYYYY') te renvoie un truc au format DDMMYYYY
    Il faut indiquer au to_date le format correct.


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Voila qui devrait aller mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_date('01' || SUBSTR(to_char(add_months(sysdate,1),'DDMMYYYY'),3))

  5. #5
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Et pourquoi ne pas faire une requête propre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select trunc (add_months (sysdate, 1), 'MM') from dual;
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Points : 73
    Points
    73
    Par défaut
    Mille mercis

    Je vais essayer la solution de lalystar qui correspond plus à ma façon de programmer et je vais envoyer la modif sans la tester

    orafrance es-tu sûr que ta syntaxe va passer ? un passage de format à to_date comme l'a fait lalystar n'est pas nécessaire ?

  7. #7
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Pas de probléme (même s'il est vrai qu'elle n'a pas la classe de celle de PlaineR ), puisque j'ajoute une journée que je mets au format DDMMYYYY pour ne retenir que la chaine à partir du 3° de caractère et enfin, j'ajoute 01 avant

  8. #8
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par echoes
    ...je vais envoyer la modif sans la tester

    orafrance es-tu sûr que ta syntaxe va passer ?
    Alors ça, ça me dépasse !!!
    Faire le copier coller pour tester, il y en a pour 3 secondes, pourquoi vous en dispenser ???

    Un mec qui réagirait comme ça devant moi, je lui botte le cul aussi sec
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Points : 73
    Points
    73
    Par défaut
    Oh là !

    Je dis sans tester parce que sur ma plateforme il n'y a pas de différence donc je ne peux pas affirmer avoir résolu le problème.

    Dans tous les cas je vérifie que chez moi ça fonctionne toujours !

  10. #10
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Ouf, me voilà rassuré
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  11. #11
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Citation Envoyé par Pomalaix
    Alors ça, ça me dépasse !!!
    Faire le copier coller pour tester, il y en a pour 3 secondes, pourquoi vous en dispenser ???

    Un mec qui réagirait comme ça devant moi, je lui botte le cul aussi sec
    Oui mais moi j'suis moine bouddhiste

    Et puis echoes commence à être connu, je pense qu'il cherchait plus une explication de texte

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Points : 73
    Points
    73
    Par défaut
    Merci pour votre aide, ça a finalement marché la modif.

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

Discussions similaires

  1. ORA-01861: literal does not match format string
    Par unix27 dans le forum PL/SQL
    Réponses: 5
    Dernier message: 07/01/2013, 19h02
  2. ORA-01861: literal does not match format string
    Par Bat91 dans le forum PL/SQL
    Réponses: 9
    Dernier message: 31/08/2010, 11h30
  3. ORA-01861: literal does not match format string
    Par labolabs dans le forum PL/SQL
    Réponses: 3
    Dernier message: 08/02/2010, 10h31
  4. Problème avec strptime: "does not match format"
    Par Eusebius dans le forum Général Python
    Réponses: 17
    Dernier message: 08/07/2009, 21h30
  5. [Oracle] ORA-01861: literal does not match format string
    Par habasque dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/07/2008, 21h57

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