Berechnung von Geschäftstagen zwischen Datumsangaben in MySQL ohne Wochenenden
Um die Differenz in Tagen zwischen zwei Datumsangaben unter Ausschluss von Wochenenden zu ermitteln, verwenden wir den WEEKDAY von MySQL ()-Funktion. Diese Funktion bestimmt den Wochentag für ein bestimmtes Datum, wobei die Woche mit Sonntag beginnt. Auf dieser Grundlage können wir eine benutzerdefinierte Funktion entwickeln, die unseren spezifischen Anforderungen entspricht.
Erstellen der Funktion TOTAL_WEEKDAYS():
Wir richten eine Funktion mit dem Namen TOTAL_WEEKDAYS() ein akzeptiert zwei DATE-Parameter, date1 und date2. Diese Funktion berechnet sorgfältig die Differenz zwischen Wochentagen und berücksichtigt dabei Wochenendtage und Randfälle:
CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE) RETURNS INT RETURN ABS(DATEDIFF(date2, date1)) + 1 -- Total days - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY), -- Weekdays between ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2 - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1) -- Account for edge case - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7); -- Account for edge case
Verwendung und Tests:
Um diese Funktion zu nutzen, stellen wir zwei zur Verfügung DATE-Variablen date1 und date2, für die wir die Differenz zwischen Werktagen ermitteln möchten. Die Ausgabe schließt Wochenenden aus:
SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') AS weekdays1, TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') AS weekdays2;
Ergebnis:
| WEEKDAYS1 | WEEKDAYS2 | ------------------------- | 13 | 13 |
In diesem Beispiel mit einem Startdatum von „2013-08-03“ und einem Enddatum „21.08.2013“, also 13 Werktage. Die Funktion schließt die Wochenendtage bei ihrer Berechnung genau aus.
Das obige ist der detaillierte Inhalt vonWie berechnet man Geschäftstage zwischen Datumsangaben in MySQL ohne Wochenenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!