Heim > Datenbank > MySQL-Tutorial > Wie kann ich Geschäftstage zwischen zwei Daten in MySQL effizient berechnen, ohne eine Feiertagstabelle zu verwenden?

Wie kann ich Geschäftstage zwischen zwei Daten in MySQL effizient berechnen, ohne eine Feiertagstabelle zu verwenden?

DDD
Freigeben: 2025-01-16 17:54:12
Original
474 Leute haben es durchsucht

How Can I Efficiently Calculate Business Days Between Two Dates in MySQL Without Using a Holiday Table?

MySQL-Arbeitstagzählfunktion

Die Funktion NETWORKDAYS() von Excel kann die Anzahl der Arbeitstage zwischen zwei angegebenen Daten effizient berechnen. In MySQL werden häufig ähnliche Funktionen benötigt, insbesondere eine, die der Einfachheit halber Feiertage ausschließt.

Eine Möglichkeit besteht darin, den folgenden Ausdruck zu 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

Um diesen Ausdruck effektiv zu verwenden:

  1. Stellen Sie sicher, dass das Enddatum (@E) nicht vor dem Startdatum (@S) liegt.
  2. Dieser Ausdruck funktioniert wie DATEDIFF. Wenn das Startdatum und das Enddatum gleich sind, ist die Anzahl der Arbeitstage Null.
  3. Bitte beachten Sie, dass diese Methode keine Feiertage berücksichtigt.

Die bereitgestellte numerische Zeichenfolge wird erstellt, indem eine Tabelle mit Start- und Enddaten erstellt wird, beginnend mit Montag, angeordnet in Zeilen und Spalten. Die Tabelle ist diagonal mit Nullen gefüllt, was darauf hinweist, dass zwischen demselben Tagestyp (z. B. Montag und Montag) keine Arbeitstage liegen.

Für jeden Tag wird die Anzahl der Arbeitstage berechnet, indem man sich diagonal entlang der Zeilen nach rechts bewegt. Bei einem arbeitsfreien Tag (Wochenende) ändert sich die Zahl nicht. Andernfalls wird es um 1 erhöht. Nach Erreichen des Zeilenendes wird der Zähler zurückgesetzt und der Vorgang fortgesetzt, bis die Diagonale wieder erreicht ist.

Angenommen, Samstag und Sonntag sind arbeitsfreie Tage:

M T W T F S S
M 0 1 2 3 4 4 4
T 4 0 1 2 3 3 3
W 3 4 0 1 2 2 2
T 2 3 4 0 1 1 1
F 1 2 3 4 0 0 0
S 0 1 2 3 4 0 0
S 0 1 2 3 4 4 0

Durch die Verkettung der 49 Werte in dieser Tabelle entsteht die im Ausdruck verwendete Zeichenfolge.

Diese Lösung berücksichtigt keine Feiertage, kann aber die Anzahl der Arbeitstage zwischen zwei Daten in MySQL effizient zählen.

Das obige ist der detaillierte Inhalt vonWie kann ich Geschäftstage zwischen zwei Daten in MySQL effizient berechnen, ohne eine Feiertagstabelle zu verwenden?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage