Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Tanggal berbeda Oracle 11g dengan TOAD

Anda melakukan beberapa konversi tanggal implisit di kedua versi. Ini:

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

setara dengan:

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

sedangkan kueri kedua memiliki salah satu yang diganti dengan format tertentu. Sepertinya format default Anda - yang dapat Anda atur, saya yakin, dalam preferensi Toad tanpa memodifikasi registri secara langsung; tidak jelas apakah Anda bahkan memodifikasi sesuatu yang berhubungan dengan Toad - apakah DD-MON-RR , seperti yang ditunjukkan dengan memasukkannya ke dalam kueri berikut:

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 )

Anda dapat melihat di Fiddle SQL ini bahwa pada versi pertama, tanggal muncul sebagai string dengan tahun sebagai 49 daripada 1949 , dan itu kemudian ditafsirkan - oleh RR topeng - sebagai 2049 , yang merupakan perilaku yang diharapkan.

Versi singkat:jangan pernah mengandalkan konversi tanggal implisit atau topeng format tanggal NLS.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan hasil dari prosedur tersimpan Oracle

  2. Ambil jumlah baris yang diperbarui

  3. Oracle:Menemukan Kolom dengan hanya nilai nol

  4. Saya ingin meneruskan argumen variabel ke file SQL eksternal (PL/SQL dengan SQL*Plus)

  5. Bagaimana saya bisa mendefinisikan tipe di Oracle11g yang mereferensikan koleksi tipe itu?