sql >> Database >  >> RDS >> MariaDB

Hoe WEEKOFYEAR() werkt in MariaDB

In MariaDB, WEEKOFYEAR() is een ingebouwde datum- en tijdfunctie die de kalenderweek van een bepaalde datum retourneert als een getal in het bereik van 1 tot 53 .

Het is het equivalent van het gebruik van de WEEK() functie in modus 3, en daarom is het resultaat in overeenstemming met ISO 8601:1988.

Het accepteert één argument; de datum waarvan u de week wilt extraheren.

Syntaxis

De syntaxis gaat als volgt:

WEEKOFYEAR(date)

Waar date is de datumuitdrukking om de kalenderweek van te krijgen.

Voorbeeld

Hier is een voorbeeld:

SELECT WEEKOFYEAR('2030-01-01');

Resultaat:

+--------------------------+
| WEEKOFYEAR('2030-01-01') |
+--------------------------+
|                        1 |
+--------------------------+

Het is het equivalent van het volgende doen:

SELECT WEEK('2030-01-01', 3);

Resultaat:

+-----------------------+
| WEEK('2030-01-01', 3) |
+-----------------------+
|                     1 |
+-----------------------+

Datum/tijd-waarden

De WEEKOFYEAR() functie werkt ook met datetime-waarden:

SELECT WEEKOFYEAR('2030-08-01 10:30:45');

Resultaat:

+-----------------------------------+
| WEEKOFYEAR('2030-08-01 10:30:45') |
+-----------------------------------+
|                                31 |
+-----------------------------------+

Numerieke datums

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

Voorbeeld

SELECT WEEKOFYEAR(20301125);

Resultaat:

+----------------------+
| WEEKOFYEAR(20301125) |
+----------------------+
|                   48 |
+----------------------+

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

SELECT WEEKOFYEAR(301125);

Resultaat:

+--------------------+
| WEEKOFYEAR(301125) |
+--------------------+
|                 48 |
+--------------------+

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

SELECT WEEKOFYEAR(20301135);

Resultaat:

+----------------------+
| WEEKOFYEAR(20301135) |
+----------------------+
|                 NULL |
+----------------------+
1 row in set, 1 warning (0.000 sec)

Het retourneerde null met een waarschuwing.

Laten we eens kijken naar de waarschuwing:

SHOW WARNINGS;

Resultaat:

+---------+------+--------------------------------------+
| Level   | Code | Message                              |
+---------+------+--------------------------------------+
| Warning | 1292 | Incorrect datetime value: '20301135' |
+---------+------+--------------------------------------+

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

Resultaat (met verticale uitvoer):

WEEKOFYEAR('2030/06/25'): 26
WEEKOFYEAR('2030,06,25'): 26
WEEKOFYEAR('2030:06:25'): 26
WEEKOFYEAR('2030;06!25'): 26

Huidige datum

We kunnen NOW() doorgeven als het datetime-argument om de huidige datum te gebruiken:

SELECT 
    NOW(),
    WEEKOFYEAR(NOW());

Resultaat:

+---------------------+-------------------+
| NOW()               | WEEKOFYEAR(NOW()) |
+---------------------+-------------------+
| 2021-05-17 09:42:13 |                20 |
+---------------------+-------------------+

Ongeldige argumenten

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

SELECT WEEKOFYEAR('2030-65-78');

Resultaat:

+--------------------------+
| WEEKOFYEAR('2030-65-78') |
+--------------------------+
|                     NULL |
+--------------------------+
1 row in set, 1 warning (0.000 sec)

Laten we de waarschuwing tonen:

SHOW WARNINGS;

Resultaat:

+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1292 | Incorrect datetime value: '2030-65-78' |
+---------+------+----------------------------------------+

Ontbrekend argument

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

SELECT WEEKOFYEAR();

Resultaat:

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

En nog een voorbeeld:

SELECT WEEKOFYEAR('2030-12-10', 1);

Resultaat:

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

  1. ORA-01264:Kan de bestandsnaam van het logbestand niet maken

  2. Moeten we niet null opgeven voor de primaire sleutel? Oracle/SQL

  3. Hoe dubbele waarden in een SQL-tabel te vinden

  4. Retourwaarde ophalen uit opgeslagen procedure in C#