Jenis Data TARIKH Oracle: Tiada format yang wujud
Jenis data DATE
Oracle menyimpan maklumat tarikh dan masa secara dalaman sebagai nilai 7-bait, bukan rentetan yang diformatkan. Ini bermakna ia tidak mempunyai format lalai terbina dalam.
Punca Salah Faham
Salah tanggapan tentang format DATE
lalai timbul apabila bekerja dengan rentetan teks. Oracle menukar rentetan ini kepada DATE
objek menggunakan parameter sesi NLS_DATE_FORMAT
. Pengaruh parameter ini mencipta tanggapan format lalai.
Cara Oracle Mengendalikan Tarikh
Pengendalian tarikh sebenar bergantung pada tetapan sesi Oracle anda:
NLS_DATE_FORMAT
semasa untuk penukaran.DATE
Terus atau TO_DATE
: Menggunakan DATE
literal (DATE 'yyyy-mm-dd'
) atau fungsi TO_DATE
dengan topeng format memintas NLS_DATE_FORMAT
, memastikan penukaran yang tepat.Amalan Terbaik untuk Pengendalian Tarikh
Untuk kejelasan dan integriti data, sentiasa gunakan:
DATE
Literal: DATE 'yyyy-mm-dd'
TIMESTAMP
Literal: TIMESTAMP 'yyyy-mm-dd HH24:MI:SS'
TO_DATE
Fungsi: TO_DATE('date_string', 'format_string')
Nyatakan format secara eksplisit.Melaraskan NLS_DATE_FORMAT
Anda boleh menukar NLS_DATE_FORMAT
sesi anda menggunakan:
<code class="language-sql">ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';</code>
Lalai NLS_DATE_FORMAT
Penentuan
Lalai NLS_DATE_FORMAT
ditentukan oleh parameter sesi NLS_TERRITORY
, berbeza mengikut wilayah geografi. Pertanyaan ini menunjukkan format dan wilayah yang berkaitan:
<code class="language-sql">SELECT f.format, LISTAGG(t.territory, ', ') WITHIN GROUP (ORDER BY t.territory) AS territories FROM (SELECT ROWNUM AS rn, COLUMN_VALUE AS territory FROM TABLE(territories)) t INNER JOIN (SELECT ROWNUM AS rn, COLUMN_VALUE AS format FROM TABLE(formats)) f ON (f.rn = t.rn) GROUP BY f.format;</code>
Atas ialah kandungan terperinci Apakah Format TARIKH Lalai dalam Oracle dan Mengapa Ia Salah Faham?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!