Mengira Hari Perniagaan dalam Oracle SQL (Tanpa Fungsi atau Prosedur)
Semasa mengira hari perniagaan antara dua tarikh dalam Oracle SQL menggunakan formula:
((to_char(Tarikh Lengkap,'J') - to_char(InstallDate,'J')) 1) - (((to_char(CompleteDate,'WW') (52 ((to_char(CompleteDate,'YYYY') - to_char(InstallDate,'YYYY')))) ) - to_char(InstallDate,'WW'))2)
mungkin menghasilkan kebanyakan hasil yang tepat, kadang-kadang menyimpang selama 2 hari atau kurang. Ketidakkonsistenan ini berpunca daripada mengabaikan faktor berikut:
Untuk menangani isu ini, formula yang lebih tepat ialah:
(TRUNC(Tarikh Selesai) - TRUNC(Tarikh Pasang) ) 1 -
((((TRUNC(Tarikh Selesai,'D'))-(TRUNC(Tarikh Pasang,'D')))/ 7)*2) -
(KES BILA TO_CHAR(InstallDate,'DY','nls_date_language=english')='SUN' THEN 1 ELSE 0 END) -
(KES BILA TO_CHAR(CompleteDate,'DY','nls_date_language=english')='SAT' THEN 1 LAIN 0 TAMAT)
Di sini, TRUNC() mengalih keluar komponen masa daripada tarikh, dan TO_CHAR() mengekstrak hari bekerja. Pengiraan kini menggabungkan bilangan hari antara tarikh yang dipotong, menolak hujung minggu dan melaraskan tarikh mula atau tamat hujung minggu.
Dengan memasukkan penambahbaikan ini, formula mengira hari perniagaan dengan tepat, sejajar dengan fungsi NETWORKDAYS dalam Excel .
Atas ialah kandungan terperinci Bagaimana untuk Mengira Hari Perniagaan dengan Tepat Antara Dua Tarikh dalam Oracle SQL Tanpa Menggunakan Fungsi atau Prosedur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!