Heim  >  Artikel  >  Datenbank  >  Wie berechnet man Datumsunterschiede ohne Wochenenden in MySQL?

Wie berechnet man Datumsunterschiede ohne Wochenenden in MySQL?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 05:27:27526Durchsuche

How to Calculate Date Differences Excluding Weekends in MySQL?

Wochenenden bei Berechnungen von Datumsdifferenzen ausschließen: Eine MySQL-Lösung

MySQL-Benutzer suchen häufig nach einer genauen Berechnung der Differenz zwischen zwei Daten, ohne Wochenenden Anleitung. Die Standardfunktion DATEDIFF ist zwar für grundlegende Datumsunterschiede nützlich, reicht aber nicht aus, wenn Wochenenden weggelassen werden müssen.

Um dieses Problem zu beheben, kann mit der WEEKDAY-Funktion eine benutzerdefinierte Funktion erstellt werden. So geht's:

CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE)
RETURNS INT

RETURN ABS(DATEDIFF(date2, date1)) + 1
     - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY),
                    ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2
     - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1)
     - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7);

Diese Funktion verwendet mehrere MySQL-Funktionen:

  • ABS: Gibt den absoluten Wert der Zahl zurück.
  • DATEDIFF: Bestimmt die Differenz zwischen zwei Daten.
  • ADDDATE: Fügt einem Datum eine bestimmte Anzahl von Tagen hinzu.
  • DAYOFWEEK: Ruft den Wochentag für ein bestimmtes Datum ab, wobei 1 den Sonntag und 7 den Samstag darstellt.

Durch die Kombination dieser Funktionen berechnet die Funktion TOTAL_WEEKDAYS die absolute Differenz zwischen den beiden Eingabedaten, subtrahiert die Anzahl der Samstage und Sonntage in der Spanne und passt die Tage am Anfang und Ende des Bereichs an .

Beispielverwendung:

So berechnen Sie die Differenz zwischen zwei Daten, Wochenenden ausgenommen:

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 |

Das obige ist der detaillierte Inhalt vonWie berechnet man Datumsunterschiede ohne Wochenenden in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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