MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

5 Funktionen zum Extrahieren der Wochennummer aus einem Datum in MariaDB

Unten sind 5 Funktionen, mit denen Sie die Wochennummer von einem Datum in MariaDB zurückgeben können. Vier geben nur die Woche zurück, und einer gibt die Woche und das Jahr zusammen zurück.

Die WEEK() Funktion

Die WEEK() Die Funktion gibt die Woche für ein bestimmtes Datum zurück.

Beispiel:

SELECT WEEK('2023-07-25');

Ergebnis:

+--------------------+
| WEEK('2023-07-25') |
+--------------------+
|                 30 |
+--------------------+

Die WEEK() Die Funktion akzeptiert ein optionales zweites Argument, um den Modus anzugeben. Das tatsächliche Ergebnis dieser Funktion hängt vom verwendeten Modus ab. Wenn das Modusargument weggelassen wird, der Wert von default_week_format Systemvariable wird verwendet.

Siehe Wie WEEK() Funktioniert in MariaDB, um mehr über die Modi und Beispiele zu erfahren.

Der EXTRACT() Funktion

Der EXTRACT () Mit dieser Funktion können Sie eine bestimmte Einheit aus dem Datum extrahieren. Daher können Sie es verwenden, um die Woche (sowie andere Einheiten) aus dem Datum zu extrahieren.

Beispiel:

SELECT EXTRACT(WEEK FROM '2023-07-25');

Ergebnis:

+---------------------------------+
| EXTRACT(WEEK FROM '2023-07-25') |
+---------------------------------+
|                              30 |
+---------------------------------+

Das DATE_FORMAT() Funktion

Das DATE_FORMAT() Mit der Funktion können Sie ein Datum basierend auf einer Formatzeichenfolge formatieren. Der Formatstring gibt an, wie das Datum formatiert werden soll.

Sie können daher diese Funktion verwenden, um die Woche (sowie jede andere Einheit) aus dem Datum zurückzugeben. Es gibt verschiedene Möglichkeiten, die Wochennummer zurückzugeben, je nachdem, an welchem ​​Tag die Woche beginnt usw.

Hier ist ein Beispiel, das die Woche in verschiedenen Formen zurückgibt:

SELECT 
    DATE_FORMAT('2023-01-01', '%U') AS "%U",
    DATE_FORMAT('2023-01-01', '%u') AS "%u",
    DATE_FORMAT('2023-01-01', '%V') AS "%V",
    DATE_FORMAT('2023-01-01', '%v') AS "%v";

Ergebnis:

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 01   | 00   | 01   | 52   |
+------+------+------+------+

Hier ist eine Beschreibung jedes dieser Formatbezeichner:

Formatbezeichner Beschreibung
%U Wochennummer (00-53), wenn der erste Tag der Woche Sonntag ist.
%u Wochennummer (00-53), wenn der erste Tag der Woche Montag ist.
%V Wochennummer (01-53), wenn der erste Tag der Woche Sonntag ist. Wird mit %X verwendet .
%v Wochennummer (01-53), wenn der erste Tag der Woche Montag ist. Wird mit %x verwendet .

Und hier ist eine Beschreibung von %X und %x wie in der obigen Tabelle angegeben:

Formatbezeichner Beschreibung
%X Jahr mit 4 Ziffern, wenn der erste Tag der Woche Sonntag ist. Wird mit %V verwendet .
%x Jahr mit 4 Ziffern, wenn der erste Tag der Woche Montag ist. Wird mit %v verwendet .

Wir können Formatbezeichner kombinieren, um das Jahr und die Woche bei Bedarf zusammen zurückzugeben:

SELECT 
    DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
    DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";

Ergebnis:

+----------+----------+
| %X, %V   | %x, %v   |
+----------+----------+
| 2023, 01 | 2022, 52 |
+----------+----------+

Beachten Sie, dass die Wochennummer nicht immer die obigen Beispiele widerspiegelt – sie hängt vom tatsächlich verwendeten Datum ab.

Verschieben wir das Datum um ein Jahr nach vorne:

SELECT 
    DATE_FORMAT('2024-01-01', '%U') AS "%U",
    DATE_FORMAT('2024-01-01', '%u') AS "%u",
    DATE_FORMAT('2024-01-01', '%V') AS "%V",
    DATE_FORMAT('2024-01-01', '%v') AS "%v";

Ergebnis:

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 00   | 01   | 53   | 01   |
+------+------+------+------+

Diesmal erhalten wir andere Ergebnisse.

Folgendes passiert, wenn wir uns in das Jahr hineinbewegen:

SELECT 
    DATE_FORMAT('2024-12-12', '%U') AS "%U",
    DATE_FORMAT('2024-12-12', '%u') AS "%u",
    DATE_FORMAT('2024-12-12', '%V') AS "%V",
    DATE_FORMAT('2024-12-12', '%v') AS "%v";

Ergebnis:

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 49   | 50   | 49   | 50   |
+------+------+------+------+

Wie Sie sehen können, ist die Rückgabe der Wochennummer nicht immer so eindeutig, wie wir es uns wünschen.

Siehe MariaDB-Formatzeichenfolgen für eine vollständige Liste von Formatzeichenfolgen/Bezeichnern, die mit DATE_FORMAT() verwendet werden können .

Die YEARWEEK() Funktion

Es ist möglich, die Woche und zu erhalten Jahr auf einen Schlag. Die YEARWEEK() Die Funktion gibt das Jahr und die Woche für ein bestimmtes Datum zurück.

Beispiel:

SELECT YEARWEEK('2023-01-01');

Ergebnis:

+------------------------+
| YEARWEEK('2023-01-01') |
+------------------------+
|                 202301 |
+------------------------+

Das Jahr im Ergebnis kann sich von dem Jahr im Datumsargument für die erste und letzte Woche des Jahres unterscheiden.

Folgendes passiert, wenn wir ein Jahr vorrücken:

SELECT YEARWEEK('2024-01-01');

Ergebnis:

+------------------------+
| YEARWEEK('2024-01-01') |
+------------------------+
|                 202353 |
+------------------------+

Wie bei der WEEK() Funktion, die YEARWEEK() Die Funktion akzeptiert ein optionales zweites Argument, um den Modus anzugeben. Das tatsächliche Ergebnis dieser Funktion hängt vom verwendeten Modus ab. Wenn das Modusargument weggelassen wird, der Wert von default_week_format Systemvariable wird verwendet.

Siehe Wie YEARWEEK() Funktioniert in MariaDB, um mehr über die Modi und Beispiele zu erfahren.