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

Linda Hamilton
Lepaskan: 2024-11-01 05:27:27
asal
525 orang telah melayarinya

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);
Salin selepas log masuk

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;
Salin selepas log masuk

Hasil:

| WEEKDAYS1 | WEEKDAYS2 |
-------------------------
|        13 |        13 |
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!