Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Unterschiedliche Daten Oracle 11g mit TOAD

Sie führen in beiden Versionen mehrere implizite Datumskonvertierungen durch. Dies:

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

entspricht:

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

während bei der zweiten Abfrage eine davon durch ein bestimmtes Format ersetzt wird. Es sieht aus wie Ihr Standardformat - das Sie, glaube ich, in den Toad-Einstellungen festlegen können, ohne die Registrierung direkt zu ändern. Es ist nicht klar, ob Sie überhaupt etwas modifizieren, das mit Toad zu tun hat - es ist DD-MON-RR , wie durch Einfügen in diese Abfragen gezeigt:

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 )

Sie können in diese SQL-Fiddle sehen dass in der ersten Version das Datum als String mit dem Jahr als 49 erscheint statt 1949 , und das wird dann interpretiert - durch den RR Maske - als 2049 , was das erwartete Verhalten ist.

Kurzversion:Verlassen Sie sich niemals auf implizite Datumskonvertierungen oder die NLS-Datumsformatmaske.