Mengira Hari Antara Tarikh Tidak Termasuk Hujung Minggu dalam MySQL
Dalam MySQL, pengiraan perbezaan antara dua tarikh adalah mudah menggunakan fungsi DATEDIFF. Walau bagaimanapun, mengecualikan hujung minggu (Sabtu dan Ahad) daripada pengiraan ini boleh menjadi mencabar.
Untuk mencapai matlamat ini, kami boleh menggunakan fungsi WEEKDAY dan fungsi tersuai untuk memudahkan proses.
Mencipta Fungsi Tersuai
Kita boleh mencipta fungsi yang dipanggil TOTAL_WEEKDAYS yang menerima dua parameter tarikh (tarikh1 dan tarikh2) dan mengembalikan bilangan hari bekerja antaranya:
CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE) RETURNS INT RETURN ABS(DATEDIFF(date2, date1)) + 1 - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY), ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2 - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1) - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7);
Fungsi mengira perbezaan mutlak antara dua tarikh, menambah satu untuk memasukkan tarikh mula dan tamat, dan kemudian menolak jumlah bilangan hujung minggu yang berlaku dalam tempoh itu. Penolakan tambahan mengambil kira kes di mana tarikh mula atau tamat jatuh pada hujung minggu.
Contoh Penggunaan
Untuk menggunakan fungsi TOTAL_WEEKDAYS, hanya panggilnya dengan tarikh yang dikehendaki :
SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') weekdays1, TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') weekdays2;
Keputusan
WEEKDAYS1 | WEEKDAYS2 |
---|---|
13 | 13 |
Seperti yang anda lihat, fungsi ini mengira dengan tepat bilangan hari bekerja antara tarikh yang diberikan, tidak termasuk hujung minggu.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Bilangan Hari Minggu Antara Dua Tarikh dalam MySQL, Tidak Termasuk Hujung Minggu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!