Oracle
 sql >> Base de données >  >> RDS >> Oracle

Différentes dates Oracle 11g avec TOAD

Vous effectuez plusieurs conversions de date implicites dans les deux versions. Ceci :

SELECT to_date(to_char(to_date('01-FEB-1949'))) FROM DUAL; 

est équivalent à :

SELECT to_date(to_char(to_date('01-FEB-1949', <NLS_DATE_FORMAT>),
    <NLS_DATE_FORMAT>, <NLS_DATE_FORMAT>)) FROM DUAL;

tandis que la deuxième requête a l'un de ceux remplacés par un format spécifique. Cela ressemble à votre format par défaut - que vous pouvez définir, je crois, dans les préférences de Toad sans modifier directement le registre ; il n'est pas clair si vous modifiez même quelque chose lié à Toad - est DD-MON-RR , comme indiqué en l'associant à ces requêtes :

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 )

Vous pouvez voir dans ce SQL Fiddle que dans la première version, la date apparaît sous forme de chaîne avec l'année sous la forme 49 plutôt que 1949 , et qui est ensuite interprété - par le RR masque - comme 2049 , qui est le comportement attendu.

Version courte :ne vous fiez jamais aux conversions de date implicites ou au masque de format de date NLS.