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

Wie WEEKOFYEAR() in MariaDB funktioniert

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'):26 

Aktuelles 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() gibt null 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“