DATE
es un tipo incorporado en Oracle, que se representa de forma fija y no tiene control sobre él.
Entonces:
Quiero que se inserte [...] como 01/08/2011 12:00:00 AM
Lo anterior es una tontería. No insertas una cadena, insertas una fecha.
El formato es útil solo cuando desea:
- para convertir una cadena en una representación interna de fecha con
TO_DATE
(máscara de formato:cómo analizar la cadena); - para convertir una representación interna de fecha en una cadena con
TO_CHAR
(máscara de formato:cómo representar la fecha).
Básicamente, en su ejemplo, toma una FECHA, la convierte en una CADENA con algún formato y la vuelve a convertir en FECHA con el mismo formato. Esto no es operativo.
Ahora, lo que muestra su cliente:esto se debe a que su Cliente de Oracle no mostrará los campos de FECHA directamente y la capa NLS convertirá cualquier campo de FECHA que esté seleccionado. Por lo tanto, depende de su configuración regional de forma predeterminada.
Lo que quieres es SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') FROM dual;
que realizará explícitamente la conversión y devolverá una cadena.
Y cuando desee insertar una fecha en una base de datos, puede usar TO_DATE
o literales de fecha.