Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Bilangan Hari Minggu Antara Dua Tarikh dalam MySQL, Tidak Termasuk Hujung Minggu?

Bagaimana untuk Mengira Bilangan Hari Minggu Antara Dua Tarikh dalam MySQL, Tidak Termasuk Hujung Minggu?

DDD
DDDasal
2024-11-02 10:06:02217semak imbas

How to Calculate the Number of Weekdays Between Two Dates in MySQL, Excluding Weekends?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn