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!