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 :

probleme avec to_date


Sujet :

Oracle

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    65
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 65
    Points : 43
    Points
    43
    Par défaut probleme avec to_date
    bonjour j'aimerais savoir comment afficher la date avec le jour de la semaine par ex

    lundi 18 decembre 2006 pour le lundi j'arrive pas voic mon code

    SET SERVEROUTPUT ON
    DECLARE

    Aff date:=to_date(sysdate,'DAY/DD/MM/YYYY');

    BEGIN
    DBMS_OUTPUT.PUT_LINE(' '|| Aff);
    END;
    /
    il me mets que ce n'est pas un jour de la semaine valide au niveau de la ligne Aff

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Une date ne porte pas de format, donc une date n'a pas a avoir le jour de la semaine ou pas, une date est une date.... son stockage interne est un peu comme celui d'excel, c'est à dire un nombre réel (à virgule donc) dont l'unité est le jour, et çe n'interresse généralement personne d'avoir l'affichage de ce réel sous sa forme primaire...
    Comme dans n'importe quel langage ou tu veux faire de la sortie texte, la seule chose qui est affichable est une chaine de caractère, ton problème ne va donc pas se résoudre par un to_date mais par un to_char qui est la fonction permetant de convertir de la date en texte (car sysdate lui est bien de type date.)
    Ce qui provoque la confusion est le fait qu'oracle fasse des conversions implicites, ce qui est une source incroyable d'anomalies bien cachées... implicitement, oracle tolère les affectations de dates en caractères et vice-versa en s'appuyant sur le format par défaut stocké dans la variable de session NLS_DATE_FORMAT.

    donc quand tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Aff := to_date(sysdate,'DAY DD/MM/YYYY')
    tu fais une conversion implicite car la fonction to_date attend une chaine en premier paramètre, oracle traduit donc par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Aff := to_date(to_char(sysdate,NLS_DATE_FORMAT),'DAY DD/MM/YYYY')
    Puis quand tu affiches une date par dbms_output.put_line tu fais une 2ieme conversion implicite car cette fonction requier aussi une chaine de caractère en paramètre alors que tu lui passe une date, oracle fait en réalité:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBMS_OUTPUT.PUT_LINE(' '|| to_char(Aff,NLS_DATE_FORMAT));
    Donc, selon la valeur de cette fameuse variable NLS_DATE_FORMAT, qui peut différer d'un client à l'autre, et avec cette double conversion, tu as peu de chance de retomber sur tes pieds...

    Essaye plutot:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SET SERVEROUTPUT ON
    aff varchar2(64);
    BEGIN
    Aff := to_char(sysdate,'DAY DD/MM/YYYY')
    DBMS_OUTPUT.PUT_LINE(' '|| Aff);
    END;
    /

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    65
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    merci j'avais pas penser pourtant j'ai ete voir plein de doc sur le net dur dur

    merci encore

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

Discussions similaires

  1. probleme avec to_date sous oracle
    Par hoolako dans le forum SQL
    Réponses: 5
    Dernier message: 13/03/2009, 21h38
  2. probleme avec TO_DATE
    Par subzero01 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 28/08/2008, 12h46
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 23h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 08h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 09/06/2002, 00h06

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