I MariaDB, WEEKOFYEAR()
är en inbyggd datum- och tidsfunktion som returnerar kalenderveckan för ett givet datum som ett tal i intervallet från 1
till 53
.
Det motsvarar att använda WEEK()
funktion i läge 3, och därför är resultatet i enlighet med ISO 8601:1988.
Den accepterar ett argument; datumet du vill extrahera veckan från.
Syntax
Syntaxen ser ut så här:
WEEKOFYEAR(date)
Där date
är datumuttrycket att hämta kalenderveckan från.
Exempel
Här är ett exempel:
SELECT WEEKOFYEAR('2030-01-01');
Resultat:
+--------------------------------+| WEEKOFYEAR('2030-01-01') |+--------------------------------+| 1 |+---------------------------------+
Det motsvarar att göra följande:
SELECT WEEK('2030-01-01', 3);
Resultat:
+------------------------------+| VECKA('2030-01-01', 3) |+-----------------------------+| 1 |+------------------------------+
Datetime-värden
WEEKOFYEAR()
Funktionen fungerar även med datetime-värden:
SELECT WEEKOFYEAR('2030-08-01 10:30:45');
Resultat:
+----------------------------------------+| WEEKOFYEAR('2030-08-01 10:30:45') |+---------------------------------------- --+| 31 |+-------------------------------------------+
Numeriska datum
Det är också möjligt att skicka datum som ett nummer, så länge det är vettigt som ett datum.
Exempel
SELECT WEEKOFYEAR(20301125);
Resultat:
+-----------------------------+| WEEKOFYEAR(20301125) |+----------------------------+| 48 |+-----------------------------+
Eller till och med följande (som använder ett tvåsiffrigt år):
SELECT WEEKOFYEAR(301125);
Resultat:
+----------------------------+| WEEKOFYEAR(301125) |+--------------------------+| 48 |+---------------------------+
Men det måste vara vettigt som en dejt. Så här händer om jag ökar dagdelen till en ogiltig dag:
SELECT WEEKOFYEAR(20301135);
Resultat:
+-----------------------------+| WEEKOFYEAR(20301135) |+----------------------------+| NULL |+-----------------------------+1 rad i set, 1 varning (0,000 sek)
Den returnerade null
med en varning.
Låt oss titta på varningen:
SHOW WARNINGS;
Resultat:
+--------+------+------------------------------------ ----------+| Nivå | Kod | Meddelande |+--------+------+-------------------------------------- --------+| Varning | 1292 | Felaktigt datetime-värde:'20301135' |+--------+------+------------------------ --------------+
Andra avgränsare
Du kan använda andra avgränsare för datumet. MariaDB är ganska förlåtande när det kommer till avgränsare på datum. Här är några giltiga exempel:
SELECT
WEEKOFYEAR('2030/06/25'),
WEEKOFYEAR('2030,06,25'),
WEEKOFYEAR('2030:06:25'),
WEEKOFYEAR('2030;06!25');
Resultat (med vertikal utdata):
WEEKOFYEAR('2030/06/25'):26WEEKOFYEAR('2030,06,25'):26WEEKOFYEAR('2030:06:25'):26WEEKOFYEAR('2030;06!25'):26 före>Aktuellt datum
Vi kan skicka
NOW()
som datetime-argument för att använda det aktuella datumet:SELECT NOW(), WEEKOFYEAR(NOW());
Resultat:
+----------------------------+------------------------+| NU() | WEEKOFYEAR(NU()) |+--------------------------+-------------------+ | 2021-05-17 09:42:13 | 20 |+----------------------+------------------------+Ogiltiga argument
När ett ogiltigt argument passerats,
WEEKOFYEAR()
returnerarnull
:SELECT WEEKOFYEAR('2030-65-78');
Resultat:
+--------------------------------+| WEEKOFYEAR('2030-65-78') |+--------------------------------+| NULL |+---------------------------+1 rad i set, 1 varning (0,000 sek)Låt oss visa varningen:
SHOW WARNINGS;
Resultat:
+--------+------+------------------------------------ -----------+| Nivå | Kod | Meddelande |+--------+------+-------------------------------------- ----------+| Varning | 1292 | Felaktigt datetime-värde:'2030-65-78' |+---------+------+-------------------- --------------------+Argument saknas
Anropar
WEEKOFYEAR()
med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:SELECT WEEKOFYEAR();
Resultat:
ERROR 1582 (42000):Fel parameterräkning i anropet till den ursprungliga funktionen 'WEEKOFYEAR'Och ett annat exempel:
SELECT WEEKOFYEAR('2030-12-10', 1);
Resultat:
ERROR 1582 (42000):Fel parameterräkning i anropet till den ursprungliga funktionen 'WEEKOFYEAR'