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

masalah dengan fungsi to_date dengan sysdate

Saya ingin menjelaskan mengapa Anda mendapatkan hasil yang berbeda.

Lihat sqlfiddle ini

Seperti yang sudah dikatakan, sysdate dilihat sebagai DATE ketik dan Anda melakukan konversi implisit saat

select to_date(sysdate, format) from dual;

karena parameter pertama to_date harus berupa tipe varchar yang dilakukan sistem:

select to_date(to_char(sysdate), format) from dual;

karena format tanggal implisit Anda adalah 'DD-MON-YY' , kueri Anda masuk ke:

SELECT TO_CHAR(to_date('01-JAN-13', 'DD-MON-yy'), 'DAY'),
  TO_CHAR(to_date('01-JAN-13', 'DD-MON-yyyy'), 'DAY'),
  TO_CHAR(to_date('01-JAN-13', 'DD-MON-rr'), 'DAY'),
  TO_CHAR(to_date('01-JAN-13', 'DD-MON-rrrr'), 'DAY')
FROM dual;

tanggal_kedua, karena yyyy adalah format ribuan tahun penuh, pergi ke '01-JAN-0013' yang 13AD dan mungkin adalah MINGGU :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menggunakan Fungsi Oracle LISTAGG

  2. EM 12c Menyesuaikan Nilai Ambang Batas

  3. miskin Hibernate pilih kinerja dibandingkan dengan menjalankan secara langsung - bagaimana debug?

  4. Manajer Konkuren Oracle

  5. ORA-01111 dalam MRP dalam database Siaga Fisik