Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Datas diferentes Oracle 11g com TOAD


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.