In MariaDB WEEKOFYEAR()
ist eine integrierte Datums- und Uhrzeitfunktion, die die Kalenderwoche eines bestimmten Datums als Zahl im Bereich von 1
zurückgibt bis 53
.
Dies entspricht der Verwendung von WEEK()
Funktion im Modus 3, und daher entspricht das Ergebnis ISO 8601:1988.
Es akzeptiert ein Argument; das Datum, aus dem Sie die Woche extrahieren möchten.
Syntax
Die Syntax sieht so aus:
WEEKOFYEAR(date)
Wobei date
ist der Datumsausdruck, aus dem die Kalenderwoche abgerufen werden soll.
Beispiel
Hier ist ein Beispiel:
SELECT WEEKOFYEAR('2030-01-01');
Ergebnis:
+---------------------+| WOCHENJAHR('2030-01-01') |+---------------------+| 1 |+---------------------+
Dies entspricht dem folgenden Vorgang:
SELECT WEEK('2030-01-01', 3);
Ergebnis:
+-----------------------+| WOCHE('2030-01-01', 3) |+-----------------------+| 1 |+-----------------------+
Datum/Uhrzeit-Werte
Das WEEKOFYEAR()
Funktion funktioniert auch mit datetime-Werten:
SELECT WEEKOFYEAR('2030-08-01 10:30:45');
Ergebnis:
+-----------------------------------+| WOCHE DES JAHRES('2030-08-01 10:30:45') |+-------------------------------- --+| 31 |+-----------------------------------+
Numerische Daten
Es ist auch möglich, Datumsangaben als Zahl zu übergeben, sofern es als Datum sinnvoll ist.
Beispiel
SELECT WEEKOFYEAR(20301125);
Ergebnis:
+----------------------+| WOCHE DES JAHRES(20301125) |+----------------------+| 48 |+----------------------+
Oder sogar das Folgende (das eine zweistellige Jahreszahl verwendet):
SELECT WEEKOFYEAR(301125);
Ergebnis:
+--------------------+| WOCHENJAHR(301125) |+--------------------+| 48 |+--------------------+
Aber als Date muss es Sinn machen. Folgendes passiert, wenn ich den Tagesteil auf einen ungültigen Tag erhöhe:
SELECT WEEKOFYEAR(20301135);
Ergebnis:
+----------------------+| WOCHE DES JAHRES(20301135) |+----------------------+| NULL |+----------------------+1 Zeile im Satz, 1 Warnung (0,000 Sek.)
Es hat null
zurückgegeben mit einer Warnung.
Schauen wir uns die Warnung an:
SHOW WARNINGS;
Ergebnis:
+---------+------+------------------------------------- ---------+| Ebene | Code | Nachricht |+---------+------+------------------------------ --------+| Warnung | 1292 | Falscher datetime-Wert:'20301135' |+---------+------+----------------------- --------------+
Andere Trennzeichen
Sie können andere Trennzeichen für das Datum verwenden. MariaDB ist ziemlich nachsichtig, wenn es um Trennzeichen bei Datumsangaben geht. Hier sind einige gültige Beispiele:
SELECT
WEEKOFYEAR('2030/06/25'),
WEEKOFYEAR('2030,06,25'),
WEEKOFYEAR('2030:06:25'),
WEEKOFYEAR('2030;06!25');
Ergebnis (bei vertikaler Ausgabe):
WOCHE DES JAHRES('2030/06/25'):26WOCHE DES JAHRES('2030,06,25'):26WOCHE DESJAHRES('2030:06:25'):26WOCHE DESJAHRES('2030;06!25'):26Aktuelles Datum
Wir können
NOW()
übergeben als datetime-Argument, um das aktuelle Datum zu verwenden:SELECT NOW(), WEEKOFYEAR(NOW());
Ergebnis:
+---------------------+-------------------+| JETZT() | WOCHENJAHR(JETZT()) |+---------------------+-------------------+ | 2021-05-17 09:42:13 | 20 |+---------------------+-------------------+Ungültige Argumente
Wenn ein ungültiges Argument übergeben wird,
WEEKOFYEAR()
gibtnull
zurück :SELECT WEEKOFYEAR('2030-65-78');
Ergebnis:
+---------------------+| WOCHE DES JAHRES('2030-65-78') |+---------------------+| NULL |+-------------------------+1 Zeile im Satz, 1 Warnung (0,000 Sek.)Lassen Sie uns die Warnung anzeigen:
SHOW WARNINGS;
Ergebnis:
+---------+------+------------------------------------- -----------+| Ebene | Code | Nachricht |+---------+------+------------------------------ ----------+| Warnung | 1292 | Falscher datetime-Wert:'2030-65-78' |+---------+------+-------------------- --------------------+Fehlendes Argument
Aufruf von
WEEKOFYEAR()
mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:SELECT WEEKOFYEAR();
Ergebnis:
FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „WEEKOFYEAR“Und noch ein Beispiel:
SELECT WEEKOFYEAR('2030-12-10', 1);
Ergebnis:
FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „WEEKOFYEAR“