Fungsi mengira hari bekerja MySQL
Fungsi NETWORKDAYS() Excel boleh mengira dengan cekap bilangan hari bekerja antara dua tarikh yang ditentukan. Dalam MySQL, fungsi serupa sering diperlukan, terutamanya yang tidak termasuk cuti untuk kesederhanaan.
Salah satu cara ialah menggunakan ungkapan berikut:
<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
Untuk menggunakan ungkapan ini dengan berkesan:
Rentetan angka yang disediakan dibina dengan membuat jadual tarikh mula dan tamat, bermula dengan hari Isnin, disusun dalam baris dan lajur. Jadual diisi secara menyerong dengan sifar, menunjukkan bahawa tiada hari bekerja antara jenis hari yang sama (contohnya, Isnin hingga Isnin).
Untuk setiap hari, bilangan hari bekerja dikira dengan bergerak secara menyerong di sepanjang baris ke kanan. Jika ditemui hari tidak bekerja (hujung minggu), bilangannya tidak berubah. Jika tidak, ia dinaikkan sebanyak 1. Selepas sampai ke penghujung baris, kaunter ditetapkan semula dan proses diteruskan sehingga pepenjuru dicapai semula.
Sebagai contoh, andaikan Sabtu dan Ahad adalah hari tidak bekerja:
M | T | W | T | F | S | S | |
---|---|---|---|---|---|---|---|
M | 0 | 1 | 2 | 3 | 4 | 4 | 4 |
T | 4 | 0 | 1 | 2 | 3 | 3 | 3 |
W | 3 | 4 | 0 | 1 | 2 | 2 | 2 |
T | 2 | 3 | 4 | 0 | 1 | 1 | 1 |
F | 1 | 2 | 3 | 4 | 0 | 0 | 0 |
S | 0 | 1 | 2 | 3 | 4 | 0 | 0 |
S | 0 | 1 | 2 | 3 | 4 | 4 | 0 |
Menggabungkan 49 nilai dalam jadual ini menghasilkan rentetan yang digunakan dalam ungkapan.
Penyelesaian ini tidak mengambil kira cuti, tetapi ia boleh mengira bilangan hari bekerja dengan cekap antara dua tarikh dalam MySQL.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Hari Perniagaan dengan Cekap Antara Dua Tarikh dalam MySQL Tanpa Menggunakan Jadual Percutian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!