In MySQL die YEARWEEK()
Die Funktion gibt das Jahr und die Woche für ein bestimmtes Datum zurück. Sie geben das Datum als Argument an und die Funktion gibt das entsprechende Ergebnis zurück.
Sie haben auch die Möglichkeit festzulegen, ob die Woche am Sonntag oder am Montag beginnen soll und ob die Woche im Bereich von 0 bis 53 oder 1 bis 53 liegen soll.
Syntax
Sie können eine der beiden folgenden Formen verwenden:
YEARWEEK(date) YEARWEEK(date,mode)
Wo:
date
ist das Datum, von dem die Jahres- und Wochennummer zurückgegeben werden soll.mode
ist eine Zahl, die angibt, ob die Woche am Sonntag oder Montag beginnen soll und ob die Woche im Bereich von 0 bis 53 oder 1 bis 53 liegen soll. Siehe die Tabelle unten für die möglichen Moduswerte.
Wenn kein Modus angegeben ist, ist der Modus 0
.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein Beispiel zur Veranschaulichung.
SELECT YEARWEEK('2021-01-25') As 'Result';
Ergebnis:
+--------+ | Result | +--------+ | 202104 | +--------+
Hier ist ein Beispiel mit einem anderen Datum.
SELECT YEARWEEK('1999-12-25') As 'Result';
Ergebnis:
+--------+ | Result | +--------+ | 199951 | +--------+
Beispiel 2 – Geben Sie einen Modus an
Wenn Sie kein zweites Argument angeben, die YEARWEEK()
Funktion verwendet 0
als Modus.
Sie haben jedoch auch die Möglichkeit, ein zweites Argument anzugeben, um anzugeben, welcher Modus verwendet werden soll. Beispiel:
SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';
Ergebnis:
+--------+ | Mode 7 | +--------+ | 201946 | +--------+
Die möglichen Moduswerte sind wie folgt.
Modus | Erster Wochentag | Bereich | Woche 1 ist die erste Woche … |
---|---|---|---|
0 | Sonntag | 0-53 | mit einem Sonntag in diesem Jahr |
1 | Montag | 0-53 | mit 4 oder mehr Tagen in diesem Jahr |
2 | Sonntag | 1-53 | mit einem Sonntag in diesem Jahr |
3 | Montag | 1-53 | mit 4 oder mehr Tagen in diesem Jahr |
4 | Sonntag | 0-53 | mit 4 oder mehr Tagen in diesem Jahr |
5 | Montag | 0-53 | mit einem Montag in diesem Jahr |
6 | Sonntag | 1-53 | mit 4 oder mehr Tagen in diesem Jahr |
7 | Montag | 1-53 | mit einem Montag in diesem Jahr |
Dies sind dieselben Werte, die mit WEEK()
verwendet werden können Funktion.
Ein Unterschied zwischen diesen beiden Funktionen besteht darin, dass WEEK()
Die Funktion leitet ihren Standardmodus vom default_week_format
ab Systemvariable (der Standardwert dieser Variablen ist 0
). YEARWEEK()
ignoriert andererseits diese Einstellung und verwendet 0
als Standardwert (unabhängig vom default_week_format
Einstellung).
Beispiel 3 – Vergleich der Modi
Hier ist ein kurzer Vergleich, wie Sie je nach verwendetem Modus unterschiedliche Ergebnisse erzielen können.
Die folgenden drei Beispiele verwenden denselben Code, jedoch mit drei unterschiedlichen Datumsangaben. Diese Daten sind fortlaufend – sie finden am 5., 6. und 7. Januar statt. Wie Sie sehen können, können die Ergebnisse abhängig vom genauen Datum und dem verwendeten Modus sehr unterschiedlich sein.
Datum 1
SET @date = '2019-01-05'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Ergebnis:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201852 | 201901 | 201852 | 201901 | 201901 | 201853 | 201901 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Datum 2
SET @date = '2019-01-06'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Ergebnis:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201901 | 201901 | 201901 | 201902 | 201853 | 201902 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Datum 3
SET @date = '2019-01-07'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Ergebnis:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201902 | 201901 | 201902 | 201902 | 201901 | 201902 | 201901 | +--------+--------+--------+--------+--------+--------+--------+--------+