Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Hari Bekerja Antara Dua Tarikh dalam MySQL Tanpa Fungsi Terbina dalam?
Cara mengira hari bekerja antara dua tarikh dalam MySQL
Banyak program hamparan yang popular, seperti Excel, menyediakan fungsi NETWORKDAYS() untuk mengira bilangan hari bekerja antara dua tarikh. Walau bagaimanapun, MySQL tidak mempunyai fungsi terbina dalam yang serupa.
Penyelesaian: Ungkapan Matematik
Untuk mengira bilangan hari bekerja antara dua tarikh dalam MySQL, anda boleh menggunakan ungkapan berikut:
<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
Penjelasan:
DATEDIFF(@E, @S)
: Mengira perbezaan hari antara tarikh tamat (@E) dan tarikh mula (@S). DIV 7
: Bahagikan perbezaan dengan 7 untuk mendapatkan bilangan minggu antara tarikh. 5
: Darabkan bilangan minggu dengan 5 untuk mendapatkan bilangan hari bekerja. MID()
: Ekstrak subset nombor yang berkaitan daripada rentetan berdasarkan tarikh mula dan tarikh tamat. Rentetan khusus yang digunakan dalam ungkapan dibina daripada bilangan hari bekerja antara gabungan tarikh mula dan tamat yang berbeza. Andaian dan had:
Contoh:
Untuk mengira bilangan hari bekerja antara '2023-03-06' (@S) dan '2023-03-10' (@E), anda boleh menggunakan pertanyaan berikut:
<code class="language-sql">SELECT 5 * (DATEDIFF('2023-03-10', '2023-03-06') DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY('2023-03-06') + WEEKDAY('2023-03-10') + 1, 1) AS num_working_days;</code>
Pertanyaan ini akan mengembalikan bilangan hari bekerja antara dua tarikh, iaitu 5.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Hari Bekerja Antara Dua Tarikh dalam MySQL Tanpa Fungsi Terbina dalam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!