Kira hari bekerja antara dua tarikh dalam MySQL
Fungsi NETWORKDAYS() Excel menyediakan cara yang mudah untuk menentukan bilangan hari bekerja antara dua tarikh yang ditentukan. Walau bagaimanapun, MySQL tidak mempunyai fungsi terbina dalam yang serupa.
Untuk menyelesaikan masalah ini, berikut ialah ungkapan MySQL yang boleh digunakan sebagai alternatif:
<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
Salin selepas log masuk
Ungkapan ini mengandungi pengiraan berikut:
-
Kira perbezaan hari bekerja: (DATEDIFF(@E, @S) DIV 7) Kira berapa minggu ada antara tarikh mula @S dan tarikh tamat @E. Bahagikan dengan 7 untuk mendapatkan bilangan minggu yang lengkap, kita darabkannya dengan 5 untuk mengambil kira bilangan hari bekerja setiap minggu.
-
Kira indeks permulaan dan akhir hari bekerja: 7 WEEKDAY(@S) dan 7 WEEKDAY(@E) Kira indeks hari bekerja tarikh mula dan tarikh tamat ( Isnin ialah 0, 1 untuk Selasa, dan seterusnya). Penambahan 1 adalah untuk memadankan indeks dengan rentetan angka yang dibincangkan di bawah.
-
Dapatkan kiraan hari bekerja: PERTENGAHAN('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) rentetan WEEKDAY,(@1) rentetan tunggal WEEKDAY,(@1) Watak ini mewakili bilangan hari bekerja antara gabungan hari bekerja yang ditentukan.
Rentetan angka yang disediakan dibina untuk mewakili bilangan hari bekerja antara setiap kombinasi hari bekerja (Isnin hingga Isnin, Selasa hingga Selasa, dsb.). Dengan menggabungkan indeks hari bekerja dan mendapatkan semula aksara yang sepadan, kami mendapat kiraan hari bekerja.
Andaian dan had:
- Fungsi ini menganggap bahawa @E tidak lebih awal daripada @S.
- Ia mengabaikan cuti umum, jadi kiraan hari bekerja yang dikira mungkin tidak tepat untuk senario yang melibatkan cuti.
- Rentetan nombor dikodkan keras ke dalam ungkapan dan mungkin perlu dikemas kini jika konvensyen hari bekerja berbeza (mis. jika Ahad dianggap sebagai hari bekerja).
Atas ialah kandungan terperinci Bagaimana untuk Mengira Hari Perniagaan Antara Dua Tarikh dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!