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 :

Oracle 10g date et timestamp


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 139
    Points : 113
    Points
    113
    Par défaut Oracle 10g date et timestamp
    Bonjour à tous,
    je m'occupe de faire la migration d'une application Postgres sous Oracle. Dans Postgres il y avait des types "date" et "timestamp" tout comme dans Oracle.
    Je suis sur une application Tomcat/Hibernate/Oracle 10g (avec ojdbc5).
    Lorsque je fais des opérations sur les timestamp je n'ai aucun soucis. Par contre avec les dates j'ai systèmatiquement l'erreur :
    ORA-01861: le littéral ne concorde pas avec le format chaîne de caractères

    Cependant lorsque j'execute la requête générée par HQL directement sous sqlplus je n'ai aucun problème...Je précise que le but du jeu est que j'exécute mes requêtes toujours avec le même format de date et qu'il doit se débrouiller avec
    Voici un exemple de requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select antecedent.id as id0_ where antecedent0_.date_enregistrement<='2008-07-01 18:51:56'
    Cela fait un moment que je cherche une solution sans succès, j'ai bien setté mes variables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nls_date_format                      string      YYYY-MM-DD HH24:MI:SS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nls_timestamp_format                 string      YYYY-MM-DD HH24:MI:SS.FF
    La requête ci-dessus marche impéc en sqlplus si je l'execute sur un champ date ou timestamp; mais pas dans mon appli. Est-ce un problème du jdbc oracle ? y-a-t-il des paramètres à gérer ?

    Merci beaucoup d'essayer de vous pencher sur mon problème.

    p.s : je rajoute que lorsque je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from NLS_DATABASE_PARAMETERS;
    j'ai dans NLS_DATE_FORMAT : DD-MON-RR ......je ne sais pas si c'est utile comme remarque mais je le précise.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 139
    Points : 113
    Points
    113
    Par défaut
    réponse temporaire trouvée...apparament le jdbc ne récuperais pas la session...j'ai donc rajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Session s = this.currentSession();
    		s.createSQLQuery("alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'").executeUpdate();
    c'est pas propre mais ca marche pour le moment...

  3. #3
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Quand tu fais des requêtes avec des filtres sur les dates, il vaut toujours mieux forcer la conversion to_char(date) pour comparer des chaines de caractères, car le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    antecedent0_.date_enregistrement<='2008-07-01 18:51:56'
    peut planter selon la valeur des paramètres NLS côté client
    Privilégie plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_char(antecedent0_.date_enregistrement,'YYYYMMDD HH:MI:SS'))<='2008-07-01 18:51:56'
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    antecedent0_.date_enregistrement<=to_date('2008-07-01 18:51:56','YYYYMMDD HH:MI:SS')
    qui est je pense plus performant car évite de convertir chaque ligne de la table

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

Discussions similaires

  1. [Doctrine] DateTime + Oracle 10g Date format
    Par swordi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/03/2012, 11h19
  2. Format de l'heure d'une date [Oracle 10g]
    Par Dark Ryus dans le forum Oracle
    Réponses: 3
    Dernier message: 23/04/2007, 11h47
  3. [Oracle 10g] Format de DATE
    Par mjolymelot dans le forum Oracle
    Réponses: 6
    Dernier message: 26/06/2006, 14h12
  4. [Oracle 10g] pb de convertion de VarChar en Date
    Par mjolymelot dans le forum Oracle
    Réponses: 3
    Dernier message: 24/06/2006, 10h30
  5. [ORACLE 10G]Incrémentation d'une date d'un jour
    Par titanblanc dans le forum Oracle
    Réponses: 2
    Dernier message: 05/01/2006, 11h07

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