Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengira Hari Perniagaan Antara Dua Tarikh dalam MySQL Tanpa Mengambil kira Cuti?
Mengira Hari Perniagaan (Tidak Termasuk Hujung Minggu) dengan Cekap dalam MySQL
Banyak aplikasi memerlukan pengiraan bilangan hari perniagaan antara dua tarikh. Walaupun perisian hamparan sering menyediakan fungsi terbina dalam untuk ini (seperti NETWORKDAYS), MySQL tidak mempunyai persamaan langsung. Artikel ini membentangkan ungkapan MySQL ringkas untuk mencapai ini, memfokuskan pada pengecualian hujung minggu. Ambil perhatian bahawa penyelesaian ini tidak mengambil kira cuti.
Ekspresi MySQL
Untuk menentukan hari perniagaan antara tarikh @S
(tarikh mula) dan @E
(tarikh tamat), gunakan yang berikut:
<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
Cara ia Berfungsi:
Ungkapan ini dengan bijak menggabungkan beberapa fungsi MySQL:
DATEDIFF(@E, @S)
: Mengira jumlah bilangan hari antara dua tarikh.
DIV 7
: Membahagikan jumlah hari dengan 7, memberikan bilangan minggu penuh.
*` 5`:** Mendarabkan bilangan minggu dengan 5 untuk mengambil kira lima hari perniagaan dalam setiap minggu.
WEEKDAY(@S)
dan WEEKDAY(@E)
: Tentukan hari dalam seminggu (0 untuk Ahad, 1 untuk Isnin, dll.) untuk kedua-dua tarikh mula dan tamat.
*`7 WEEKDAY(@S) WEEKDAY(@E) 1`:** Pengiraan ini menjana indeks ke dalam rentetan carian.
MID('0123444401233334012222340111123400012345001234550', ..., 1)
: Fungsi MID
menggunakan indeks yang dikira untuk mengeluarkan satu digit daripada rentetan yang dibina dengan bijak. Angka ini mewakili baki hari perniagaan yang tidak ditangkap oleh pengiraan minggu penuh (perakaun untuk separa minggu pada permulaan dan akhir).
Kaedah ini menawarkan cara yang pantas dan cekap untuk menganggarkan hari perniagaan dalam MySQL, tidak termasuk hujung minggu, tanpa kerumitan mengendalikan cuti. Untuk penyelesaian yang lebih komprehensif termasuk cuti, pendekatan yang lebih terperinci melibatkan jadual percutian diperlukan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Hari Perniagaan Antara Dua Tarikh dalam MySQL Tanpa Mengambil kira Cuti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!