I MariaDB, YEAR() er en indbygget dato- og tidsfunktion, der returnerer året fra et givet datoudtryk.
Den accepterer ét argument, som er den dato, du vil udtrække året fra.
Det returnerer året som et tal i området 1000 til 9999 . For nul datoer (f.eks. 0000-00-00 ), er resultatet 0 .
Syntaks
Syntaksen ser sådan ud:
YEAR(date)
Hvor date er datoudtrykket, der skal hentes året fra.
Eksempel
Her er et eksempel:
SELECT YEAR('2030-08-01'); Resultat:
+----------------------------+| ÅR('2030-08-01') |+------------------------+| 2030 |+----------------------------+ Dato-tidsværdier
Det fungerer også med datetime-værdier:
SELECT YEAR('2030-08-01 10:30:45'); Resultat:
+-------------------------------------+| ÅR('2030-08-01 10:30:45') |+-----------------------------------+| 2030 |+-------------------------------------+ Nul datoer
Nul datoer resulterer i 0 .
Eksempel:
SELECT YEAR('0000-00-00'); Resultat:
+----------------------------+| ÅR('0000-00-00') |+--------------------+| 0 |+----------------------------+ Numeriske datoer
Det er også muligt at videregive datoer som et tal, så længe det giver mening som en dato.
Eksempel
SELECT YEAR(20301125); Resultat:
+----------------+| ÅR(20301125) |+----------------+| 2030 |+----------------+
Eller endda følgende (som bruger et tocifret årstal):
SELECT YEAR(301125); Resultat:
+--------------+| ÅR(301125) |+--------------+| 2030 |+--------------+
Men det skal give mening som en date. Her er, hvad der sker, hvis jeg øger dagsdelen til en ugyldig dag:
SELECT YEAR(20301135); Resultat:
+----------------+| ÅR(20301135) |+----------------+| NULL |+----------------+1 række i sæt, 1 advarsel (0,000 sek.)
Vi kan tjekke advarslen sådan her:
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
YEAR('2030/06/25'),
YEAR('2030,06,25'),
YEAR('2030:06:25'),
YEAR('2030;06!25'); Resultat (ved hjælp af lodret output):
YEAR('2030/06/25'):2030YEAR('2030,06,25'):2030YEAR('2030:06:25'):2030YEAR('2030;06!25'):2030 Aktuel dato
Vi kan sende NOW() som datetime-argument for at bruge den aktuelle dato:
SELECT
NOW(),
YEAR(NOW());
Resultat:
+----------------------------+-------------+| NU() | ÅR(NU()) |+----------------------+------------+| 2021-05-18 08:55:02 | 2021 |+---------------------+-------------+
Ugyldige argumenter
Når et ugyldigt argument sendes, YEAR() returnerer null :
SELECT YEAR('2030-65-78');
Resultat:
+----------------------------+| ÅR('2030-65-78') |+------------------------+| NULL |+--------------------+1 række i sæt, 1 advarsel (0,001 sek.)
Tjek advarslen:
SHOW WARNINGS;
Resultat:
+--------+------+------------------------------------- -----------+| Niveau | Kode | Besked |+--------+------+-------------------------------------- ----------+| Advarsel | 1292 | Forkert datetime-værdi:'2030-65-78' |+---------+------+-------------------- --------------------+
Manglende argument
Kalder YEAR() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
SELECT YEAR();
Resultat:
FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MariaDB-serverversion for den rigtige syntaks til brug i nærheden af ')' på linje 1
Og endnu et eksempel:
SELECT YEAR('2030-12-10', '2031-12-10');
Resultat:
FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MariaDB-serverversion for den rigtige syntaks, der skal bruges nær ''2031-12-10')' på linje 1