Perbezaan milisaat antara cap masa yang dikira dalam pangkalan data Oracle
Mengira perbezaan milisaat antara dua cap masa dalam pangkalan data Oracle memerlukan pertimbangan yang teliti tentang nuansa khusus platform serta format output yang diperlukan.
Apabila dua pembolehubah TIMESTAMP ditolak, hasilnya ialah nilai INTERVAL DAY TO SECOND. Selang ini mengandungi bilangan milisaat dan/atau mikrosaat yang berbeza, bergantung pada sistem pengendalian yang digunakan oleh pangkalan data. Sebagai contoh, pangkalan data berasaskan Windows biasanya menyediakan milisaat, manakala pangkalan data berasaskan Unix cenderung menggunakan mikrosaat.
Ekstrak komponen masa
Untuk mendapatkan semula komponen masa tertentu daripada nilai INTERVAL DAY TO SECOND, anda boleh menggunakan fungsi EXTRACT. Fungsi ini membenarkan pengekstrakan elemen individu seperti hari, jam, minit dan saat.
Kira jumlah milisaat
Jika anda memerlukan jumlah bilangan milisaat antara cap masa, anda boleh menukar setiap komponen yang diekstrak kepada milisaat dan jumlah. Walau bagaimanapun, selalunya lebih praktikal untuk mengekalkan perwakilan INTERVAL DAY TO SECOND atau membuat lajur berbeza untuk jam, minit dan saat.
Contoh pengiraan:
Pertimbangkan contoh berikut:
<code class="language-sql">select systimestamp - to_timestamp('2012-07-23', 'yyyy-mm-dd') from dual;</code>
Pertanyaan ini mendapatkan semula perbezaan masa sebagai nilai INTERVAL DAY TO SECOND:
<code>+000000000 14:51:04.339000000</code>
Menggunakan fungsi EXTRACT kita boleh mengekstrak komponen hari, jam, minit dan kedua:
<code class="language-sql">select extract(day from diff) days, extract(hour from diff) hours, extract(minute from diff) minutes, extract(second from diff) seconds from (select systimestamp - to_timestamp('2012-07-23', 'yyyy-mm-dd') diff from dual);</code>
Hasilnya ialah:
<code> DAYS HOURS MINUTES SECONDS ---------- ---------- ---------- ---------- 0 14 55 37.936</code>
Untuk mengira jumlah milisaat kami menggabungkan komponen ini:
<code class="language-sql">select extract(day from diff)*24*60*60*1000 + extract(hour from diff)*60*60*1000 + extract(minute from diff)*60*1000 + round(extract(second from diff)*1000) total_milliseconds from (select systimestamp - to_timestamp('2012-07-23', 'yyyy-mm-dd') diff from dual);</code>
Kembalikan hasil:
<code>TOTAL_MILLISECONDS ------------------ 53831842</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Milisaat Antara Cap Masa dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!