Heim >Datenbank >MySQL-Tutorial >Wie kann ich in MySQL Werktage zwischen zwei Daten berechnen, ohne Feiertage zu berücksichtigen?
Effiziente Berechnung von Werktagen (außer Wochenenden) in MySQL
Viele Bewerbungen erfordern die Berechnung der Anzahl der Werktage zwischen zwei Daten. Während Tabellenkalkulationssoftware hierfür oft integrierte Funktionen bietet (wie NETWORKDAYS), fehlt MySQL ein direktes Äquivalent. In diesem Artikel wird ein prägnanter MySQL-Ausdruck vorgestellt, um dies zu erreichen, wobei der Schwerpunkt auf dem Ausschluss von Wochenenden liegt. Beachten Sie, dass diese Lösung Feiertage nicht berücksichtigt.
Der MySQL-Ausdruck
Um Werktage zwischen den Daten @S
(Startdatum) und @E
(Enddatum) zu ermitteln, verwenden Sie Folgendes:
<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
Wie es funktioniert:
Dieser Ausdruck kombiniert geschickt mehrere MySQL-Funktionen:
DATEDIFF(@E, @S)
: Berechnet die Gesamtzahl der Tage zwischen den beiden Daten.
DIV 7
: Teilt die Gesamtzahl der Tage durch 7 und ergibt so die Anzahl der vollen Wochen.
*` 5`:** Multipliziert die Anzahl der Wochen mit 5, um die fünf Werktage in jeder Woche zu berücksichtigen.
WEEKDAY(@S)
und WEEKDAY(@E)
: Bestimmen Sie den Wochentag (0 für Sonntag, 1 für Montag usw.) sowohl für das Start- als auch für das Enddatum.
*`7 WEEKDAY(@S) WEEKDAY(@E) 1`:** Diese Berechnung generiert einen Index in der Suchzeichenfolge.
MID('0123444401233334012222340111123400012345001234550', ..., 1)
: Die Funktion MID
verwendet den berechneten Index, um eine einzelne Ziffer aus einer geschickt konstruierten Zeichenfolge zu extrahieren. Diese Ziffer stellt die verbleibenden Werktage dar, die bei der Berechnung der gesamten Wochen nicht erfasst werden (unter Berücksichtigung der Teilwochen am Anfang und am Ende).
Diese Methode bietet eine schnelle und effiziente Möglichkeit, Arbeitstage in MySQL mit Ausnahme von Wochenenden zu schätzen, ohne dass die Komplexität der Handhabung von Feiertagen anfällt. Für eine umfassendere Lösung einschließlich Feiertagen wäre ein aufwändigerer Ansatz mit einer Feiertagstabelle erforderlich.
Das obige ist der detaillierte Inhalt vonWie kann ich in MySQL Werktage zwischen zwei Daten berechnen, ohne Feiertage zu berücksichtigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!