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 :

modifier unc champ varchar en date


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut modifier unc champ varchar en date
    Bonjour,

    Lors de la création de mon script, j'ai fait l'erreur de mettre un champ date en varchar.
    Des insertions ont été effectuées et je souhaiterais modifier le type de mon champ afin de le mettre en type date.
    Quelqu'un aurait une idée?

    Merci.

  2. #2
    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
    Si tu es en 9i ou supérieur:
    1. Tu ajoutes une colonne de type date
    2. Tu fais un update de ta table pour renseigner le nouveau champ date créé à partir de ton champ varchar2
    3. tu dropes ta colonne varchar2
    4. tu renommes ta colonne date

    Si tu es en 8i, tu dois passer par une table temporaire que tu renommes ensuite.

  3. #3
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Bonjour ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    SQL> create table dvp ( a varchar2(20)) ;
     
    Table créée.
     
    SQL> insert into dvp values ('01/12/2005') ; 
     
    1 ligne créée.
     
    SQL>  insert into dvp values ('31/12/2005') ; 
     
    1 ligne créée.
     
    SQL> commit ;
     
    Validation effectuée.
     
    SQL>  create table dvp_temp ( a date ) ; 
     
    Table créée.
     
    SQL> insert into dvp_temp select to_date (a,'DD/MM/YYYY') from dvp ; 
     
    2 ligne(s) créée(s).
     
    SQL> commit ;
     
    Validation effectuée.
     
    SQL> select * from dvp_temp ; 
     
    A
    --------
    01/12/05
    31/12/05
     
    SQL> drop table dvp ; 
     
    Table supprimée.
     
    SQL> alter table dvp_temp rename dvp ; 
    alter table dvp_temp rename dvp
                                *
     
    SQL>  alter table dvp_temp rename to dvp ; 
     
    Table modifiée.
    Je préfére cette solution a celle d'ajouter une colonne et ensuite de passer la premiére à UNUSED en 8i

    Attention aux indesx , triggers voir les dépendances

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut
    merci j'ai utilisé la deuxième solution qui m'a l'air plus simple par contre il ne faut pas que j'oublie de récréer tous mes triggers etc...

  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
    Par défaut
    Citation Envoyé par illegalsene
    il ne faut pas que j'oublie de récréer tous mes triggers etc...
    C'est justement l'avantage de l'autre solution

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut
    euh il en découle un petit problème, lorsque j'effectue mes insertions, elles sont de ce type là dd/mm/yyyy. Cependant j'ai un message de retour invalide format month; je pense qu'on attend un format de ce type mm/dd/yyyy.
    Suis-je obligé de modifier les paramètres dans Oracle?

  7. #7
    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
    Il est conseillé de toujours inséré sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_date (ma_valeur_char, mon_format)
    car d'une session à l'autre le format de tes dates peut changer.

    Néanmoins, tu peux changer en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter session set nls_date_format = 'DD/MM/YYYY';

Discussions similaires

  1. [MySQL] Classé un champ varchar, contenant des dates
    Par gastoncs dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/09/2009, 01h04
  2. Convertir champ type Varchar en Date ?
    Par link.80 dans le forum Requêtes
    Réponses: 3
    Dernier message: 15/07/2009, 09h26
  3. Modifier le champ jour d'une date dans mysql
    Par sandddy dans le forum Requêtes
    Réponses: 6
    Dernier message: 12/03/2008, 09h09
  4. modifier un champs numérique en date
    Par mat75019 dans le forum Access
    Réponses: 1
    Dernier message: 26/04/2006, 13h28
  5. Réponses: 1
    Dernier message: 03/11/2004, 14h55

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