Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mengira Perbezaan Tarikh Tidak Termasuk Hujung Minggu dalam MySQL?

Bagaimana untuk Mengira Perbezaan Tarikh Tidak Termasuk Hujung Minggu dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 05:27:27526semak imbas

How to Calculate Date Differences Excluding Weekends in MySQL?

Tidak Termasuk Pengiraan Perbezaan Tarikh Hujung Minggu: Penyelesaian MySQL

Untuk mengira dengan tepat perbezaan antara dua tarikh, tidak termasuk hujung minggu, pengguna MySQL sering mencari bimbingan. Fungsi DATEDIFF standard, walaupun berguna untuk perbezaan tarikh asas, gagal apabila hujung minggu perlu ditinggalkan.

Untuk menangani isu ini, fungsi tersuai boleh dibuat menggunakan fungsi WEEKDAY. Begini caranya:

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 ini menggunakan beberapa fungsi MySQL:

  • ABS: Mengembalikan nilai mutlak nombor.
  • DATEDIFF: Menentukan perbezaan antara dua tarikh.
  • TAMBAH TARIKH: Menambah bilangan hari yang ditentukan pada tarikh.
  • DAYOFWEEK: Mendapat hari dalam minggu untuk tarikh tertentu, dengan 1 mewakili Ahad dan 7 mewakili Sabtu.

Dengan menggabungkan fungsi ini, fungsi TOTAL_WEEKDAYS mengira perbezaan mutlak antara dua tarikh input, menolak bilangan Sabtu dan Ahad dalam rentang dan melaraskan untuk hari pada permulaan dan akhir julat .

Contoh Penggunaan:

Untuk mengira perbezaan antara dua tarikh, tidak termasuk hujung minggu:

SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') AS weekdays1,
       TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') AS weekdays2;

Hasil:

| WEEKDAYS1 | WEEKDAYS2 |
-------------------------
|        13 |        13 |

Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Tarikh Tidak Termasuk Hujung Minggu dalam MySQL?. 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