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

Wie DAYOFWEEK() in MariaDB funktioniert

In MariaDB DAYOFWEEK() ist eine integrierte Datums- und Zeitfunktion, die den Wochentag von einem bestimmten Datum zurückgibt.

Es akzeptiert ein Argument, nämlich das Datum, aus dem Sie den Wochentag extrahieren möchten.

Es gibt den Tag als Zahl zurück. Die Indexnummerierung folgt dem ODBC-Standard (1 =Sonntag, 2 =Montag usw.). Dies steht im Gegensatz zu WEEKDAY() , wobei 0 =Montag, 1 =Dienstag usw.

Syntax

Die Syntax lautet wie folgt:

DAYOFWEEK(date) 

Wobei date ist das Datum, von dem der Tag abgerufen werden soll.

Beispiel

Hier ist ein Beispiel:

SELECT DAYOFWEEK('2030-01-25'); 

Ergebnis:

+-------------------------+| WOCHENTAG('2030-01-25') |+-------------------------+| 6 |+-------------------------+

Im Vergleich zum Tagesnamen

Hier ist ein weiterer neben DAYNAME() um den Tagesnamen zurückzugeben:

SELECT 
    DAYOFWEEK('2030-01-20'),
    DAYNAME('2030-01-20'); 

Ergebnis:

+--------------------+-------------------- ---+| WOCHENTAG('2030-01-20') | TAGESNAME('2030-01-20') |+--------------------+------------ -----------+| 1 | Sonntag |+--------------------+--------------------- --+

Wie bereits erwähnt, beginnt die Indexnummerierung für Sonntag bei 1.

Hier ist Samstag:

SELECT 
    DAYOFWEEK('2030-01-19'),
    DAYNAME('2030-01-19'); 

Ergebnis:

+--------------------+-------------------- ---+| WOCHENTAG('2030-01-19') | TAGNAME('2030-01-19') |+--------------------+------------ -----------+| 7 | Samstag |+--------------------+--------------------- --+

Datum/Uhrzeit-Werte

Es funktioniert auch mit datetime-Werten:

SELECT DAYOFWEEK('2030-01-24 10:30:45'); 

Ergebnis:

+----------------------------------------------+| WOCHENTAG('2030-01-24 10:30:45') |+-------------------------------- -+| 5 |+-----------------------------------------------+

Zero Days

Null Tage ergeben null .

Beispiel:

SELECT DAYOFWEEK('2030-00-00'); 

Ergebnis:

+-------------------------+| WOCHENTAG('2030-00-00') |+--------------------+| NULL |+-------------------------+

Numerische Daten

Es ist auch möglich, Datumsangaben als Zahl zu übergeben, sofern es als Datum sinnvoll ist.

Beispiel

SELECT DAYOFWEEK(20300125); 

Ergebnis:

+---------------------+| WOCHENTAG(20300125) |+---------------------+| 6 |+---------------------+

Oder sogar das Folgende (das eine zweistellige Jahreszahl verwendet):

SELECT DAYOFWEEK(300125); 

Ergebnis:

+-------------------+| WOCHENTAG(300125) |+-------------------+| 6 |+------------------------------+

Aber als Date muss es Sinn machen. Folgendes passiert, wenn ich den Tagesteil auf einen ungültigen Tag erhöhe:

SELECT DAYOFWEEK(20300135); 

Ergebnis:

+---------------------+| WOCHENTAG(20300135) |+---------------------+| NULL |+---------------------+

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 
    DAYOFWEEK('2030/01/25'),
    DAYOFWEEK('2030,01,25'),
    DAYOFWEEK('2030:01:25'),
    DAYOFWEEK('2030;01!25'); 

Ergebnis (bei vertikaler Ausgabe):

WOCHENTAG('2030/01/25'):6WOCHENTAG('2030,01,25'):6WOCHENTAG('2030:01:25'):6WOCHENTAG('2030;01!25'):6 

Aktuelles Datum

Wir können NOW() übergeben als Datumsargument, um das aktuelle Datum zu verwenden:

SELECT 
    NOW(),
    DAYOFWEEK(NOW()); 

Ergebnis:

+---------------------+------------------+| JETZT() | WOCHENTAG(JETZT()) |+---------------------+------------------+| 2021-05-15 09:17:44 | 7 |+---------------------+------------------+

Ungültige Argumente

Wenn ein ungültiges Argument übergeben wird, DAYOFWEEK() gibt null zurück :

SELECT DAYOFWEEK('Homer'); 

Ergebnis:

+--------------------+| WOCHENTAG('Homer') |+--------------------+| NULL |+--------------------+

Fehlendes Argument

Aufruf von DAYOFWEEK() mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT DAYOFWEEK(); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „DAYOFWEEK“

Und noch ein Beispiel:

SELECT DAYOFWEEK('2030-01-25', '2045-05-08'); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „DAYOFWEEK“