Kebenaran tentang format tarikh pangkalan data Oracle dan mekanisme pengendaliannya
Banyak artikel mendakwa bahawa format tarikh lalai Oracle ialah YYYYMMDD, DD/MM/YYYY atau YYYY-MM-DD. Walau bagaimanapun, salah faham ini berpunca daripada fakta bahawa Oracle sendiri tidak mempunyai format tarikh yang telah ditetapkan. Oracle secara dalaman menyimpan tarikh sebagai nilai binari yang mewakili tahun, bulan, hari, jam, minit dan saat.
Apabila memasukkan tarikh ke dalam Oracle menggunakan rentetan seperti '25-JAN-18', Oracle cuba menukar rentetan kepada tarikh berdasarkan parameter sesi NLS_DATE_FORMAT. Nilai NLS_DATE_FORMAT akan berbeza-beza berdasarkan tetapan rantau dan sesi pengguna. Oleh itu, format tarikh yang sah boleh berbeza-beza antara pengguna dan boleh berubah secara dinamik dalam sesi.
Penukaran rentetan ke tarikh
Untuk mengelakkan bergantung pada penukaran tersirat, adalah disyorkan untuk menukar rentetan secara eksplisit kepada tarikh menggunakan salah satu kaedah berikut:
Tukar NLS_DATE_FORMAT
Untuk menukar parameter sesi NLS_DATE_FORMAT, gunakan pernyataan berikut:
<code class="language-sql">ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';</code>
NLS_DATE_FORMAT lalai
NLS_DATE_FORMAT lalai bergantung pada parameter sesi NLS_TERRITORY, yang mencerminkan tempat pengguna. Pertanyaan berikut menunjukkan hubungan antara NLS_TERRITORY dan NLS_DATE_FORMAT:
<code class="language-sql">... SELECT CAST(f.format AS VARCHAR2(12)) AS format, LISTAGG(t.territory, ', ') WITHIN GROUP (ORDER BY t.territory) AS territories ...</code>
Menjalankan pertanyaan ini akan menghasilkan senarai nilai NLS_DATE_FORMAT dan kawasan berkenaan yang berkenaan.
Atas ialah kandungan terperinci Apakah Format Tarikh Lalai Sebenar dalam Oracle dan Bagaimana Ia Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!