sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer WEEKOFYEAR() i MariaDB

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() returnerer null :

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'

  1. Er der forskel på SQL Server Express (2012) og LocalDB?

  2. Alternativer til LIMIT og OFFSET for personsøgning i Oracle

  3. Oracle:Bulk Collect-ydelse

  4. SQL mindre end eller lig med (=) operatør for begyndere