Mysql
 sql >> Datenbank >  >> RDS >> Mysql

YEARWEEK() Beispiele – MySQL

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 |
+--------+--------+--------+--------+--------+--------+--------+--------+