I MariaDB, WEEKOFYEAR()
er en indbygget dato- og tidsfunktion, der returnerer kalenderugen for en given dato som et tal i området fra 1
til 53
.
Det svarer til at bruge WEEK()
funktion i tilstand 3, og derfor er resultatet i overensstemmelse med ISO 8601:1988.
Den accepterer ét argument; den dato, du vil udtrække ugen fra.
Syntaks
Syntaksen ser sådan ud:
WEEKOFYEAR(date)
Hvor date
er datoudtrykket at hente kalenderugen fra.
Eksempel
Her er et eksempel:
SELECT WEEKOFYEAR('2030-01-01');
Resultat:
+--------------------------------+| WEEKOFYEAR('2030-01-01') |+--------------------------------+| 1 |+--------------------------------+
Det svarer til at gøre følgende:
SELECT WEEK('2030-01-01', 3);
Resultat:
+------------------------------+| UGE('2030-01-01', 3) |+----------------------------+| 1 |+------------------------------+
Dato-tidsværdier
WEEKOFYEAR()
funktion fungerer også med datetime-værdier:
SELECT WEEKOFYEAR('2030-08-01 10:30:45');
Resultat:
+----------------------------------------+| WEEKOFYEAR('2030-08-01 10:30:45') |+---------------------------------------- --+| 31 |+--------------------------------------------+
Numeriske datoer
Det er også muligt at videregive datoer som et tal, så længe det giver mening som en dato.
Eksempel
SELECT WEEKOFYEAR(20301125);
Resultat:
+-----------------------------+| WEEKOFYEAR(20301125) |+----------------------------+| 48 |+-----------------------------+
Eller endda følgende (som bruger et tocifret årstal):
SELECT WEEKOFYEAR(301125);
Resultat:
+----------------------------+| WEEKOFYEAR(301125) |+-------------------------+| 48 |+---------------------------+
Men det skal give mening som en date. Her er, hvad der sker, hvis jeg øger dagsdelen til en ugyldig dag:
SELECT WEEKOFYEAR(20301135);
Resultat:
+-----------------------------+| WEEKOFYEAR(20301135) |+---------------------------+| NULL |+-----------------------------+1 række i sæt, 1 advarsel (0,000 sek.)
Det returnerede null
med en advarsel.
Lad os se på advarslen:
SHOW WARNINGS;
Resultat:
+--------+------+------------------------------------- ----------+| Niveau | Kode | Besked |+--------+------+-------------------------------------- --------+| Advarsel | 1292 | Forkert datetime-værdi:'20301135' |+--------+------+------------------------ --------------+
Andre afgrænsninger
Du kan bruge andre skilletegn for datoen. MariaDB er ret tilgivende, når det kommer til afgrænsninger på datoer. Her er nogle gyldige eksempler:
SELECT
WEEKOFYEAR('2030/06/25'),
WEEKOFYEAR('2030,06,25'),
WEEKOFYEAR('2030:06:25'),
WEEKOFYEAR('2030;06!25');
Resultat (ved hjælp af lodret output):
WEEKOFYEAR('2030/06/25'):26WEEKOFYEAR('2030,06,25'):26WEEKOFYEAR('2030:06:25'):26WEEKOFYEAR('2030;06!25'):26 før>Aktuel dato
Vi kan sende
NOW()
som datetime-argument for at bruge den aktuelle dato:SELECT NOW(), WEEKOFYEAR(NOW());
Resultat:
+---------------------+------------------------+| NU() | WEEKOFYEAR(NU()) |+--------------------------+-------------------+ | 2021-05-17 09:42:13 | 20 |+----------------------+------------------------+Ugyldige argumenter
Når et ugyldigt argument sendes,
WEEKOFYEAR()
returnerernull
:SELECT WEEKOFYEAR('2030-65-78');
Resultat:
+--------------------------------+| WEEKOFYEAR('2030-65-78') |+--------------------------------+| NULL |+---------------------------+1 række i sæt, 1 advarsel (0,000 sek.)Lad os vise advarslen:
SHOW WARNINGS;
Resultat:
+--------+------+------------------------------------- -----------+| Niveau | Kode | Besked |+--------+------+-------------------------------------- ----------+| Advarsel | 1292 | Forkert datetime-værdi:'2030-65-78' |+---------+------+-------------------- --------------------+Manglende argument
Kalder
WEEKOFYEAR()
med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:SELECT WEEKOFYEAR();
Resultat:
FEJL 1582 (42000):Forkert parameterantal i kaldet til den oprindelige funktion 'WEEKOFYEAR'Og endnu et eksempel:
SELECT WEEKOFYEAR('2030-12-10', 1);
Resultat:
FEJL 1582 (42000):Forkert parameterantal i kaldet til den oprindelige funktion 'WEEKOFYEAR'