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.
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.
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.
Bonjour ,
Je préfére cette solution a celle d'ajouter une colonne et ensuite de passer la premiére à UNUSED en 8i
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.
Attention aux indesx , triggers voir les dépendances
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...
C'est justement l'avantage de l'autre solutionEnvoyé par illegalsene
![]()
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?
Il est conseillé de toujours inséré sous la forme :
car d'une session à l'autre le format de tes dates peut changer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part to_date (ma_valeur_char, mon_format)
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';
Partager