Heim > Datenbank > MySQL-Tutorial > Wie berechnet man Arbeitstage zwischen zwei Daten in MySQL ohne integrierte Funktion?

Wie berechnet man Arbeitstage zwischen zwei Daten in MySQL ohne integrierte Funktion?

Mary-Kate Olsen
Freigeben: 2025-01-16 17:56:10
Original
209 Leute haben es durchsucht

How to Calculate Working Days Between Two Dates in MySQL Without a Built-in Function?

So berechnen Sie Arbeitstage zwischen zwei Daten in MySQL

Viele gängige Tabellenkalkulationsprogramme wie Excel bieten die Funktion NETWORKDAYS() zur Berechnung der Anzahl der Arbeitstage zwischen zwei Daten. Allerdings verfügt MySQL nicht über eine ähnliche integrierte Funktion.

Lösung: Mathematischer Ausdruck

Um die Anzahl der Arbeitstage zwischen zwei Daten in MySQL zu berechnen, können Sie den folgenden Ausdruck verwenden:

<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
Nach dem Login kopieren

Erklärung:

  • DATEDIFF(@E, @S): Berechnet die Differenz in Tagen zwischen dem Enddatum (@E) und dem Startdatum (@S).
  • DIV 7: Teilen Sie die Differenz durch 7, um die Anzahl der Wochen zwischen den Daten zu erhalten.
  • 5: Multiplizieren Sie die Anzahl der Wochen mit 5, um die Anzahl der Arbeitstage zu erhalten.
  • MID(): Extrahieren Sie die relevante Teilmenge der Zahlen aus der Zeichenfolge basierend auf dem Startdatum und dem Enddatum. Die im Ausdruck verwendete spezifische Zeichenfolge wird aus der Anzahl der Arbeitstage zwischen verschiedenen Start- und Enddatumskombinationen erstellt.

Annahmen und Einschränkungen:

  • Das Enddatum (@E) darf nicht vor dem Startdatum (@S) liegen.
  • Diese Funktion ignoriert Feiertage.
  • Dieser Ausdruck geht davon aus, dass Montag der erste Tag der Woche ist.

Beispiel:

Um die Anzahl der Arbeitstage zwischen dem 06.03.2023 (@S) und dem 10.03.2023 (@E) zu berechnen, können Sie die folgende Abfrage verwenden:

<code class="language-sql">SELECT 5 * (DATEDIFF('2023-03-10', '2023-03-06') DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY('2023-03-06') + WEEKDAY('2023-03-10') + 1, 1) AS num_working_days;</code>
Nach dem Login kopieren

Diese Abfrage gibt die Anzahl der Arbeitstage zwischen zwei Daten zurück, also 5.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage