Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Hari Bekerja Antara Dua Tarikh dalam MySQL Tanpa Fungsi Terbina dalam?

Bagaimana untuk Mengira Hari Bekerja Antara Dua Tarikh dalam MySQL Tanpa Fungsi Terbina dalam?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-16 17:56:10207semak imbas

How to Calculate Working Days Between Two Dates in MySQL Without a Built-in Function?

Cara mengira hari bekerja antara dua tarikh dalam MySQL

Banyak program hamparan yang popular, seperti Excel, menyediakan fungsi NETWORKDAYS() untuk mengira bilangan hari bekerja antara dua tarikh. Walau bagaimanapun, MySQL tidak mempunyai fungsi terbina dalam yang serupa.

Penyelesaian: Ungkapan Matematik

Untuk mengira bilangan hari bekerja antara dua tarikh dalam MySQL, anda boleh menggunakan ungkapan berikut:

<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>

Penjelasan:

  • DATEDIFF(@E, @S): Mengira perbezaan hari antara tarikh tamat (@E) dan tarikh mula (@S).
  • DIV 7: Bahagikan perbezaan dengan 7 untuk mendapatkan bilangan minggu antara tarikh.
  • 5: Darabkan bilangan minggu dengan 5 untuk mendapatkan bilangan hari bekerja.
  • MID(): Ekstrak subset nombor yang berkaitan daripada rentetan berdasarkan tarikh mula dan tarikh tamat. Rentetan khusus yang digunakan dalam ungkapan dibina daripada bilangan hari bekerja antara gabungan tarikh mula dan tamat yang berbeza.

Andaian dan had:

  • Tarikh tamat (@E) tidak boleh lebih awal daripada tarikh mula (@S).
  • Fungsi ini mengabaikan cuti.
  • Ungkapan ini mengandaikan hari Isnin ialah hari pertama dalam seminggu.

Contoh:

Untuk mengira bilangan hari bekerja antara '2023-03-06' (@S) dan '2023-03-10' (@E), anda boleh menggunakan pertanyaan berikut:

<code class="language-sql">SELECT 5 * (DATEDIFF('2023-03-10', '2023-03-06') DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY('2023-03-06') + WEEKDAY('2023-03-10') + 1, 1) AS num_working_days;</code>

Pertanyaan ini akan mengembalikan bilangan hari bekerja antara dua tarikh, iaitu 5.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Hari Bekerja Antara Dua Tarikh dalam MySQL Tanpa Fungsi Terbina dalam?. 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