DATE
é um tipo embutido no Oracle, que é representado de forma fixa e você não tem controle sobre ele. Então:
Eu quero inserir [...] como 08/01/2011 12:00:00 AM
O acima é um absurdo. Você não insere uma string, você insere uma data.
O formato é útil apenas quando você deseja:
- para converter uma string em uma representação interna de data com
TO_DATE
(máscara de formato:como analisar a string); - para converter uma representação interna de data em uma string com
TO_CHAR
(máscara de formato:como renderizar a data).
Então, basicamente, no seu exemplo, você pega um DATE, converte para STRING com algum formato e converte de volta para DATE com o mesmo formato. Este é um não-op.
Agora, o que seu cliente exibe:isso ocorre porque seu Oracle Client não exibirá campos DATE diretamente e a camada NLS converterá qualquer campo DATE selecionado. Portanto, depende da sua localidade por padrão.
O que você quer é
SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') FROM dual;
que executará explicitamente a conversão e retornará uma string. E quando você quiser inserir uma data em um banco de dados, você pode usar
TO_DATE
ou literais de data.