DATE
est un type intégré dans Oracle, qui est représenté de manière fixe et sur lequel vous n'avez aucun contrôle.
Donc :
Je veux qu'il insère [...] comme 08/01/2011 00:00:00 AM
Ce qui précède est absurde. Vous n'insérez pas de chaîne, vous insérez une date.
Le format n'est utile que lorsque vous voulez :
- pour convertir une chaîne en une représentation interne de date avec
TO_DATE
(masque de format :comment analyser la chaîne ); - pour convertir une représentation interne de la date en une chaîne avec
TO_CHAR
(masque de format :comment afficher la date).
Donc, fondamentalement, dans votre exemple, vous prenez une DATE, vous la convertissez en STRING avec un certain format et la reconvertissez en DATE avec le même format. C'est une opération interdite.
Maintenant, ce que votre client affiche :c'est parce que votre client Oracle n'affichera pas directement les champs DATE et que la couche NLS convertira tout champ DATE sélectionné. Cela dépend donc de vos paramètres régionaux par défaut.
Ce que vous voulez est SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') FROM dual;
qui effectuera explicitement la conversion et renverra une chaîne.
Et lorsque vous souhaitez insérer une date dans une base de données, vous pouvez utiliser TO_DATE
ou des littéraux de date.