Você está fazendo várias conversões de data implícitas em ambas as versões. Este:
SELECT to_date(to_char(to_date('01-FEB-1949'))) FROM DUAL;
é equivalente a:
SELECT to_date(to_char(to_date('01-FEB-1949', <NLS_DATE_FORMAT>),
<NLS_DATE_FORMAT>, <NLS_DATE_FORMAT>)) FROM DUAL;
enquanto a segunda consulta tem uma dessas substituídas por um formato específico. Parece o seu formato padrão - que você pode definir, acredito, nas preferências do Toad sem modificar o registro diretamente; não está claro se você está modificando algo relacionado ao Toad - é
DD-MON-RR
, conforme mostrado conectando-o a estas consultas:SELECT to_date(to_char(to_date('01-FEB-1949','DD-MON-RR'),
'DD-MON-RR'),'DD-MON-RR') AS date1,
to_date(to_char(to_date('01-FEB-1949','DD-MON-RR'),
'dd-MON-yyyy'),'DD-MON-RR') AS date2 FROM DUAL;
DATE1 DATE2
February, 01 2049 00:00:00+0000 February, 01 1949 00:00:00+0000
(SQL Fiddle )
Você pode ver neste SQL Fiddle que na primeira versão, a data aparece como uma string com o ano como
49
em vez de 1949
, e isso é então interpretado - pelo RR
máscara - como 2049
, que é o comportamento esperado. Versão curta:nunca confie em conversões de data implícitas ou na máscara de formato de data NLS.