Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Hari Perniagaan Antara Tarikh dalam MySQL Tidak Termasuk Hujung Minggu?
Mengira Hari Perniagaan Antara Tarikh dalam MySQL Tidak Termasuk Hujung Minggu
Untuk memastikan perbezaan hari antara dua tarikh manakala tidak termasuk hujung minggu, kami menggunakan MySQL's WEEKDAY () fungsi. Fungsi ini menentukan hari dalam seminggu untuk tarikh tertentu, minggu bermula dengan Ahad. Berdasarkan ini, kami boleh merangka fungsi tersuai yang memenuhi keperluan khusus kami.
Mencipta Fungsi TOTAL_WEEKDAYS():
Kami menubuhkan fungsi bernama TOTAL_WEEKDAYS() yang menerima dua parameter DATE, date1 dan date2. Fungsi ini dengan teliti mengira perbezaan antara hari bekerja, memfaktorkan hari hujung minggu dan kes tepi:
CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE) RETURNS INT RETURN ABS(DATEDIFF(date2, date1)) + 1 -- Total days - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY), -- Weekdays between ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2 - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1) -- Account for edge case - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7); -- Account for edge case
Penggunaan dan Ujian:
Untuk menggunakan fungsi ini, kami menyediakan dua Pembolehubah DATE, tarikh1 dan tarikh2, yang mana kami ingin mencari perbezaan hari perniagaan. Keluaran akan mengecualikan hujung minggu:
SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') AS weekdays1, TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') AS weekdays2;
Keputusan:
| WEEKDAYS1 | WEEKDAYS2 | ------------------------- | 13 | 13 |
Dalam contoh ini, dengan tarikh mula '2013-08-03' dan tarikh tamat '2013-08-21', terdapat 13 hari perniagaan. Fungsi ini dengan tepat mengecualikan hari hujung minggu dalam pengiraannya.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Hari Perniagaan Antara Tarikh dalam MySQL Tidak Termasuk Hujung Minggu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!