
Envoyé par
wormseric
1 2
|
to_date(SYSDATE, 'DD/MM/YYYY HH24:MI:SS') |
Oulala jamais ça!
Il faut essayer de ne pas faire la confusion entre les types date et les types chaine. Le gros défaut d'oracle est qu'il ne dit rien, fait des conversions implicites et donc entretient cette confusion....
Si ton champ est de type date, tu y met une date, donc sysdate directement. Ensuite, les seuls types de données affichables sont les types caractères (char, varchar2 etc...). Dés qu'on veux afficher autre chose que des caractères, il faut bien comprendre que oracle décide tout seul de faire une conversion à partir de formats par défauts définis dans la session (ex: NLS_DATE_FORMAT). Il fait des to_char en quelques sortes...
lorsqu'on tape:
1 2
|
select sysdate from dual; |
oracle exécute:
1 2
|
select to_char(sysdate,NLS_DATE_FORMAT) from dual |
Attention ceci se fait aussi dans l'autre sens, si tu affectes une chaine de caractère à un champ date, oracle va faire un to_date implicite toujours avec le meme format...
De la même manière si tu appelle une fonction qui demande une chaine de caractère en entrée (comme to_date) avec une date, oracle va la aussi faire une conversion implicite....
donc lorsque tu fait
to_date(SYSDATE, 'DD/MM/YYYY HH24:MI:SS')
en fait oracle exécute:
to_date(to_char(SYSDATE,NLS_DATE_FORMAT), 'DD/MM/YYYY HH24:MI:SS')
si tu ne veux pas dépendre de ce fameux NLS_DATE_FORMAT (qui peux beaucoup fluctuer selon les circonstances...) alors mets des dates dans les champs dates et des caractères dans les champs caractères (et donc à l'affichage aussi)
si ton champ date_derniere_connexion est bien du type date, alors ton premier update est parfait... 
Puis si tu veux l'affficher avec les heures à la française ou comme tu veux, alors n'affiche pas le champ directement (= conversion implicite) mais fait toi même un to_char, par exemple:
1 2 3
| select to_char(date_derniere_connexion,'DD/MM/YYYY HH24:MI:SS')
from utilisateurs
WHERE ID_UTILISATEUR=10 |
PS: tu peux aussi jouer sur les paramètres de session par des "ALTER SESSION" mais si tu peux éviter...
Partager