sql >> Databasteknik >  >> RDS >> MariaDB

Hur YEAR() fungerar i MariaDB

I MariaDB, YEAR() är en inbyggd datum- och tidsfunktion som returnerar året från ett givet datumuttryck.

Den accepterar ett argument, vilket är det datum du vill extrahera året från.

Den returnerar året som ett tal i intervallet 1000 till 9999 . För noll datum (t.ex. 0000-00-00 ), blir resultatet 0 .

Syntax

Syntaxen ser ut så här:

YEAR(date) 

Där date är datumuttrycket att hämta årtalet från.

Exempel

Här är ett exempel:

SELECT YEAR('2030-08-01'); 

Resultat:

+----------------------------+| ÅR('2030-08-01') |+------------------------+| 2030 |+----------------------------+

Datetime-värden

Det fungerar också med datetime-värden:

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

Resultat:

+-------------------------------------+| ÅR('2030-08-01 10:30:45') |+-----------------------------------+| 2030 |+-------------------------------------+

Noll datum

Noll datum resulterar i 0 .

Exempel:

SELECT YEAR('0000-00-00'); 

Resultat:

+----------------------------+| ÅR('0000-00-00') |+------------------------+| 0 |+---------------------------+

Numeriska datum

Det är också möjligt att skicka datum som ett nummer, så länge det är vettigt som ett datum.

Exempel

SELECT YEAR(20301125); 

Resultat:

+----------------+| ÅR(20301125) |+----------------+| 2030 |+----------------+

Eller till och med följande (som använder ett tvåsiffrigt år):

SELECT YEAR(301125); 

Resultat:

+--------------+| ÅR(301125) |+--------------+| 2030 |+---------------------+

Men det måste vara vettigt som en dejt. Så här händer om jag ökar dagdelen till en ogiltig dag:

SELECT YEAR(20301135); 

Resultat:

+----------------+| ÅR(20301135) |+----------------+| NULL |+----------------+1 rad i set, 1 varning (0,000 sek)

Vi kan kontrollera varningen så här:

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

Resultat (med vertikal utdata):

YEAR('2030/06/25'):2030YEAR('2030,06,25'):2030YEAR('2030:06:25'):2030YEAR('2030;06!25'):2030 

Aktuellt datum

Vi kan skicka NOW() som datetime-argument för att använda det aktuella datumet:

SELECT 
    NOW(),
    YEAR(NOW()); 

Resultat:

+----------------------------+-------------+| NU() | ÅR(NU()) |+----------------------------+------------+| 2021-05-18 08:55:02 | 2021 |+---------------------+-------------+

Ogiltiga argument

När ett ogiltigt argument skickades, YEAR() returnerar null :

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

Resultat:

+----------------------------+| ÅR('2030-65-78') |+------------------------+| NULL |+--------------------+1 rad i set, 1 varning (0,001 sek)

Kontrollera varningen:

SHOW WARNINGS; 

Resultat:

+--------+------+------------------------------------ -----------+| Nivå | Kod | Meddelande |+--------+------+-------------------------------------- ----------+| Varning | 1292 | Felaktigt datetime-värde:'2030-65-78' |+---------+------+-------------------- --------------------+

Argument saknas

Anropar YEAR() med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:

SELECT YEAR(); 

Resultat:

ERROR 1064 (42000):Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MariaDB-serverversion för rätt syntax att använda nära ')' på rad 1

Och ett annat exempel:

SELECT YEAR('2030-12-10', '2031-12-10'); 

Resultat:

ERROR 1064 (42000):Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MariaDB-serverversion för rätt syntax att använda nära ''2031-12-10')' på rad 1

  1. Fatalt fel:Anrop till odefinierad funktion sqlsrv_connect()

  2. Hur man ändrar servernivåsortering av körande SQL Server-instans

  3. Inte en giltig månad när du infogar data i Oracle

  4. Hur returnerar jag en jsonb-array och en array av objekt från mina data?