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'):2030Aktuellt 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()
returnerarnull
: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 1Och 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