c'est pour une erreur ORACLE que je ne comprends pas
je cherche à mettre les secondes à vides sur une date de naissance car ça me génère des rejets d'intégration de messages
je balance ça :
update t1 set c1=to_date(to_char(c1,'dd/mm/yyyy')) where c2 in (select c2 from t2);
et il me renvoie l'erreur ora-01843 not a valid month
Réponse :
Les to_date, to_char etc. sont très "Oracle Database" et spécifiques à leur type DATE qui est précis à la seconde au lieu d'être précis à la journée.
Lorsque ces fonctions sont utilisées sur un TIMESTAMP, il y a d'ailleurs d'abord une conversion en DATE.
L'erreur obtenue vient du fait qu'il faut donner le format pour le to_char mais aussi le redonner pour le to_date et donc écrire :
Code : Tout sélectionner
Connected to:
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
update t1 set c1=to_date(to_char(c1,'DD/MM/YYYY'), 'DD/MM/YYYY') where c2 in (select c2 from t2);
Code : Tout sélectionner
update t1 set c1=trunc(c1, 'DD') where c2 in (select c2 from t2);
Code : Tout sélectionner
update t1 set c1=trunc(c1) where c2 in (select c2 from t2);