sql >> Database >  >> RDS >> MariaDB

Hoe DAYOFWEEK() werkt in MariaDB

In MariaDB, DAYOFWEEK() is een ingebouwde datum- en tijdfunctie die de dag van de week vanaf een bepaalde datum retourneert.

Het accepteert één argument, namelijk de datum waaruit u de dag van de week wilt halen.

Het geeft de dag als een getal terug. De indexnummering voldoet aan de ODBC-standaard (1 =zondag, 2 =maandag, enz.). Dit in tegenstelling tot WEEKDAY() , waarbij 0 =maandag, 1 =dinsdag, enz.

Syntaxis

De syntaxis gaat als volgt:

DAYOFWEEK(date)

Waar date is de datum om de dag vanaf te halen.

Voorbeeld

Hier is een voorbeeld:

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

Resultaat:

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

Vergeleken met de naam van de dag

Hier is er nog een, naast DAYNAME() om de naam van de dag terug te geven:

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

Resultaat:

+-------------------------+-----------------------+
| DAYOFWEEK('2030-01-20') | DAYNAME('2030-01-20') |
+-------------------------+-----------------------+
|                       1 | Sunday                |
+-------------------------+-----------------------+

Zoals gezegd begint de indexnummering bij 1 voor zondag.

Hier is zaterdag:

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

Resultaat:

+-------------------------+-----------------------+
| DAYOFWEEK('2030-01-19') | DAYNAME('2030-01-19') |
+-------------------------+-----------------------+
|                       7 | Saturday              |
+-------------------------+-----------------------+

Datum/tijd-waarden

Het werkt ook met datetime-waarden:

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

Resultaat:

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

Nul dagen

Nul dagen resulteren in null .

Voorbeeld:

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

Resultaat:

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

Numerieke datums

Het is ook mogelijk om datums als een getal door te geven, zolang het maar logisch is als een datum.

Voorbeeld

SELECT DAYOFWEEK(20300125);

Resultaat:

+---------------------+
| DAYOFWEEK(20300125) |
+---------------------+
|                   6 |
+---------------------+

Of zelfs het volgende (met een jaartal van twee cijfers):

SELECT DAYOFWEEK(300125);

Resultaat:

+-------------------+
| DAYOFWEEK(300125) |
+-------------------+
|                 6 |
+-------------------+

Maar het moet logisch zijn als een date. Dit gebeurt er als ik het daggedeelte verhoog naar een ongeldige dag:

SELECT DAYOFWEEK(20300135);

Resultaat:

+---------------------+
| DAYOFWEEK(20300135) |
+---------------------+
|                NULL |
+---------------------+

Andere scheidingstekens

U kunt andere scheidingstekens voor de datum gebruiken. MariaDB is behoorlijk vergevingsgezind als het gaat om scheidingstekens op datums. Hier zijn enkele geldige voorbeelden:

SELECT 
    DAYOFWEEK('2030/01/25'),
    DAYOFWEEK('2030,01,25'),
    DAYOFWEEK('2030:01:25'),
    DAYOFWEEK('2030;01!25');

Resultaat (met verticale uitvoer):

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

Huidige datum

We kunnen NOW() doorgeven als het datumargument om de huidige datum te gebruiken:

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

Resultaat:

+---------------------+------------------+
| NOW()               | DAYOFWEEK(NOW()) |
+---------------------+------------------+
| 2021-05-15 09:17:44 |                7 |
+---------------------+------------------+

Ongeldige argumenten

Wanneer een ongeldig argument wordt doorgegeven, DAYOFWEEK() retourneert null :

SELECT DAYOFWEEK('Homer');

Resultaat:

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

Ontbrekend argument

Bellen DAYOFWEEK() met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:

SELECT DAYOFWEEK();

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFWEEK'

En nog een voorbeeld:

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

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFWEEK'

  1. Passeer en retourneer een aangepast array-object in ibatis en oracle in java

  2. JSON_STORAGE_SIZE() - Vind de opslaggrootte van een JSON-document in MySQL

  3. Introductie van algemene tabelexpressies in SQL Server

  4. Hoe mysqlnd voor php inschakelen?