sql >> Databasteknik >  >> RDS >> MariaDB

Hur WEEKOFYEAR() fungerar i MariaDB

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

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'

  1. Chen Notation

  2. Vilka situationer gör att Oracle-paket blir ogiltiga?

  3. Hur RandomBlob() fungerar i SQLite

  4. Vårens lagrade procedur - resultat som kommer tillbaka från proceduren är alltid tomma