Heim  >  Artikel  >  Datenbank  >  Wie berechnet man die Anzahl der Wochentage zwischen zwei Daten in MySQL, ohne Wochenenden?

Wie berechnet man die Anzahl der Wochentage zwischen zwei Daten in MySQL, ohne Wochenenden?

DDD
DDDOriginal
2024-11-02 10:06:02208Durchsuche

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

Berechnen von Tagen zwischen Datumsangaben mit Ausnahme von Wochenenden in MySQL

In MySQL ist die Berechnung der Differenz zwischen zwei Datumsangaben mit der Funktion DATEDIFF ganz einfach. Allerdings kann es schwierig sein, Wochenenden (Samstag und Sonntag) aus dieser Berechnung auszuschließen.

Um dies zu erreichen, können wir die WEEKDAY-Funktion und eine benutzerdefinierte Funktion verwenden, um den Prozess zu vereinfachen.

Erstellen einer benutzerdefinierten Funktion

Wir können eine Funktion namens TOTAL_WEEKDAYS erstellen, die zwei Datumsparameter (Datum1 und Datum2) akzeptiert und die Anzahl der Wochentage dazwischen zurückgibt:

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);

Die Funktion berechnet die absolute Differenz zwischen den beiden Daten, addiert eins, um das Start- und Enddatum einzubeziehen, und subtrahiert dann die Gesamtzahl der Wochenenden, die in diesem Zeitraum liegen. Die zusätzlichen Subtraktionen berücksichtigen Fälle, in denen das Start- oder Enddatum auf ein Wochenende fällt.

Beispielverwendung

Um die Funktion TOTAL_WEEKDAYS zu verwenden, rufen Sie sie einfach mit den gewünschten Daten auf :

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

Ergebnisse

WEEKDAYS1 WEEKDAYS2
13 13

Wie Sie sehen können, berechnet die Funktion genau die Anzahl der Wochentage zwischen den angegebenen Daten, Wochenenden ausgenommen.

Das obige ist der detaillierte Inhalt vonWie berechnet man die Anzahl der Wochentage zwischen zwei Daten in MySQL, ohne Wochenenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn