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 :

[Oracle 8.1.6][PLSQL Developer] SYSDATE


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Par défaut [Oracle 8.1.6][PLSQL Developer] SYSDATE
    Bonjour à toutes et à tous.

    Je rencontre un petit soucis sous Oracle 8.1.6 avec le logiciel PLSQL Developer à propos de SYSDATE.
    Lorsque je fais, dans une fenêtre SQL, la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TO_DATE(SYSDATE, 'DD/MM/YY') FROM DUAL
    J'ai bien la date d'aujourd'hui qui m'est retournée :
    Mais lorsque je fais la requête suivante, i.e. en mettant 4Y au lieu de 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TO_DATE(SYSDATE, 'DD/MM/YYYY') FROM DUAL
    Voilà ce qu'il me retourne :
    Avec d'autres logiciels, comme Toad, je ne rencontre pas cette erreur. Y a-t-il un raté quelque part ?

    Merci d'avance pour votre aide.

    Bahan

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    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 461
    Par défaut
    Citation Envoyé par Bahan
    ...
    Avec d'autres logiciels, comme Toad, je ne rencontre pas cette erreur. Y a-t-il un raté quelque part ?
    Le premier raté, c'est déjà d'utiliser TO_DATE quand on a besoin de TO_CHAR...

  3. #3
    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
    Par défaut
    Pour rappel to_date convertit une chaine de caractères ou un nombre en date :
    http://sheikyerbouti.developpez.com/...age=Chap3#L3.3

    Or tu essaies de convertir une date en date...

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 349
    Par défaut
    ya qques années, j'avais eu un pb similaire ...

    How to fix : remplacer 'DD/MM/YYYY' par 'DD/MM/RRRR'

    Cordialement

  5. #5
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Comme il a été dit, tu fait un to_date d'une date ce qui est très mauvais... to_date attends une chaine. Et comme tu lui passe un date, oracle va d'abord faire une conversion implicite en chaine selon le paramètre de session NLS_DATE_FORMAT. Ensuite pour l'affichage, oracle re-traduit en chaine selon toujours le même paramètre. Donc il faut bien comprendre que quand tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TO_DATE(SYSDATE, 'DD/MM/YYYY') FROM DUAL
    oracle converti implicitement en:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TO_CHAR(TO_DATE(to_char(SYSDATE,NLS_DATE_FORMAT), 'DD/MM/YYYY'),NLS_DATE_FORMAT) FROM DUAL


    avoue que c'est plus simple de faire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYY') FROM DUAL

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/03/2007, 11h54
  2. Réponses: 2
    Dernier message: 18/10/2006, 11h36
  3. Réponses: 1
    Dernier message: 17/01/2005, 16h33
  4. Où télécharger Oracle developer 2000
    Par rvfranck dans le forum Oracle
    Réponses: 3
    Dernier message: 07/12/2004, 18h14
  5. Oracle 9i : PLSQL - Variable de type LONG
    Par vortex dans le forum PL/SQL
    Réponses: 8
    Dernier message: 16/11/2004, 13h23

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