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

PL/SQL Oracle Discussion :

Problème to_date PL/SQL


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1
    Par défaut Problème to_date PL/SQL
    Bonsoir,
    j'ai un souci avec la fonction to_date
    j'ai une première variable de type Date : v_Date une seconde tjs de type Date : v_DateClo


    la v_Date est egale a 20120907 par exemple je souhaiterai faire un truc du style v_DateClo := to_date(v_Date,'DD/MM/YYYY');
    pour avoir comme resultat 07/09/2012 le probleme c'est que je reçois un resultat : 20-DEC-07 ?!!!
    bizzard un peu non ??
    est ce qu'il y a autre façon pr le faire?

  2. #2
    Membre chevronné
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Par défaut
    Tu as simplement mal défini ton type date :
    Si la valeur de ton varchar2 vaut '20120907' et que tu veux le transformer en type date il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    v_DateClo := to_date(v_Date,'YYYYMMDD');

  3. #3
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    Vous nous dites que vos deux variables sont de type date.

    Il n'est JAMAIS utile de faire un to_date sur un type date.
    dans votre cas l'affectation doit se faire soit de la manière suivante

    soit (si vous voulez arrondir la data à la journée)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    v_DateClo := trunc ( v_Date ) ;
    Ensuite, lorsque vous affichez une date vous la convertissez en chaine de caractères :

    si vous faites

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbms_ouput.put_line(v_DateClo) ;
    C'est la variable de session NLS_DATE_FORMAT qui définira son affichage après une conversion implicite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SQL> declare
      2   v_date date;
      3  begin
      4   v_date:= sysdate ;
      5   dbms_output.put_line(v_date) ;
      6  end ;
      7  /
    10/09/12
     
    Procédure PL/SQL terminée avec succès.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SQL> alter session set NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS' ;
     
    Session modifiTe.
     
    SQL> declare
      2   v_date date;
      3  begin
      4   v_date:= sysdate ;
      5   dbms_output.put_line(v_date) ;
      6  end ;
      7  /
    10-SEPT.-2012 09:14:55
     
    Procédure PL/SQL terminée avec succès.
    Si vous souhaitez un affichage différent vous devez spécifier la conversion (de toutes façons pour éviter des erreurs par la suite il est plus que recommandé de le faire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      1  declare
      2   v_date date;
      3  begin
      4   v_date:= sysdate ;
      5   dbms_output.put_line(to_char(v_date, 'DD/MM/YYYY')) ;
      6* end ;
    SQL> /
    10/09/2012
     
    Procédure PL/SQL terminée avec succès.

Discussions similaires

  1. [SQLserver2000][SQLServer CE] problème de requête SQL
    Par JBernn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/01/2005, 09h29
  2. [Interbase] Problème de syntaxe SQL
    Par navis84 dans le forum InterBase
    Réponses: 4
    Dernier message: 22/12/2004, 17h07
  3. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58
  4. Problème Access to Sql Server
    Par vuldos dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/08/2004, 15h56
  5. Réponses: 3
    Dernier message: 18/11/2002, 16h36

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