Berechnen Sie Arbeitstage zwischen zwei Daten in MySQL
Die Funktion NETWORKDAYS() von Excel bietet eine praktische Möglichkeit, zu bestimmen, wie viele Arbeitstage zwischen zwei angegebenen Daten liegen. Allerdings fehlen MySQL ähnliche integrierte Funktionen.
Um dieses Problem zu lösen, finden Sie hier einen MySQL-Ausdruck, der alternativ verwendet werden kann:
<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
Nach dem Login kopieren
Dieser Ausdruck enthält die folgenden Berechnungen:
-
Arbeitstagdifferenz berechnen: (DATEDIFF(@E, @S) DIV 7) Berechnen Sie, wie viele Wochen zwischen dem Startdatum @S und dem Enddatum @E liegen. Teilen Sie durch 7, um die Anzahl der vollständigen Wochen zu erhalten, und multiplizieren Sie es mit 5, um die Anzahl der Arbeitstage pro Woche zu berücksichtigen.
-
Berechnen Sie den Arbeitstagsindex für Beginn und Ende: 7 WEEKDAY(@S) und 7 WEEKDAY(@E) Berechnen Sie den Arbeitstagsindex für das Start- und Enddatum ( Montag ist 0, 1 für Dienstag und so weiter. Die Addition von 1 dient dazu, den Index mit der unten beschriebenen numerischen Zeichenfolge abzugleichen.
-
Wochentagsanzahl abrufen: MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) WEEKDAY(@E) 1, 1) Ruft ein einzelnes Zeichen aus der bereitgestellten numerischen Zeichenfolge ab. Dieses Zeichen stellt die Anzahl der Arbeitstage zwischen der angegebenen Kombination von Arbeitstagen dar.
Die bereitgestellte numerische Zeichenfolge ist so aufgebaut, dass sie die Anzahl der Arbeitstage zwischen den einzelnen Arbeitstagskombinationen (Montag bis Montag, Dienstag bis Dienstag usw.) darstellt. Durch Kombinieren der Wochentagsindizes und Abrufen der entsprechenden Zeichen erhalten wir die Wochentagsanzahl.
Annahmen und Einschränkungen:
- Diese Funktion geht davon aus, dass @E nicht früher als @S liegt.
- Da Feiertage ignoriert werden, ist die berechnete Anzahl der Arbeitstage für Szenarios mit Feiertagen möglicherweise nicht genau.
- Die Zahlenzeichenfolge ist im Ausdruck fest codiert und muss möglicherweise aktualisiert werden, wenn die Konventionen für Arbeitstage abweichen (z. B. wenn der Sonntag als Arbeitstag gilt).
Das obige ist der detaillierte Inhalt vonWie berechnet man Geschäftstage zwischen zwei Daten in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!