In MariaDB, YEAR()
is een ingebouwde datum- en tijdfunctie die het jaar retourneert uit een bepaalde datumuitdrukking.
Het accepteert één argument, namelijk de datum waaruit je het jaar wilt halen.
Het geeft het jaar terug als een getal in het bereik 1000
tot 9999
. Voor nuldatums (bijv. 0000-00-00
), het resultaat is 0
.
Syntaxis
De syntaxis gaat als volgt:
YEAR(date)
Waar date
is de datumuitdrukking om het jaar uit te halen.
Voorbeeld
Hier is een voorbeeld:
SELECT YEAR('2030-08-01');
Resultaat:
+--------------------+ | YEAR('2030-08-01') | +--------------------+ | 2030 | +--------------------+
Datum/tijd-waarden
Het werkt ook met datetime-waarden:
SELECT YEAR('2030-08-01 10:30:45');
Resultaat:
+-----------------------------+ | YEAR('2030-08-01 10:30:45') | +-----------------------------+ | 2030 | +-----------------------------+
Nul datums
Nuldatums resulteren in 0
.
Voorbeeld:
SELECT YEAR('0000-00-00');
Resultaat:
+--------------------+ | YEAR('0000-00-00') | +--------------------+ | 0 | +--------------------+
Numerieke datums
Het is ook mogelijk om datums als een getal door te geven, zolang het maar logisch is als een datum.
Voorbeeld
SELECT YEAR(20301125);
Resultaat:
+----------------+ | YEAR(20301125) | +----------------+ | 2030 | +----------------+
Of zelfs het volgende (met een jaartal van twee cijfers):
SELECT YEAR(301125);
Resultaat:
+--------------+ | YEAR(301125) | +--------------+ | 2030 | +--------------+
Maar het moet logisch zijn als een date. Dit gebeurt er als ik het daggedeelte verhoog naar een ongeldige dag:
SELECT YEAR(20301135);
Resultaat:
+----------------+ | YEAR(20301135) | +----------------+ | NULL | +----------------+ 1 row in set, 1 warning (0.000 sec)
We kunnen de waarschuwing als volgt controleren:
SHOW WARNINGS;
Resultaat:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
Andere scheidingstekens
U kunt andere scheidingstekens voor de datum gebruiken. MariaDB is behoorlijk vergevingsgezind als het gaat om scheidingstekens op datums. Hier zijn enkele geldige voorbeelden:
SELECT
YEAR('2030/06/25'),
YEAR('2030,06,25'),
YEAR('2030:06:25'),
YEAR('2030;06!25');
Resultaat (met verticale uitvoer):
YEAR('2030/06/25'): 2030 YEAR('2030,06,25'): 2030 YEAR('2030:06:25'): 2030 YEAR('2030;06!25'): 2030
Huidige datum
We kunnen NOW()
doorgeven als het datetime-argument om de huidige datum te gebruiken:
SELECT
NOW(),
YEAR(NOW());
Resultaat:
+---------------------+-------------+ | NOW() | YEAR(NOW()) | +---------------------+-------------+ | 2021-05-18 08:55:02 | 2021 | +---------------------+-------------+
Ongeldige argumenten
Wanneer een ongeldig argument wordt doorgegeven, YEAR()
retourneert null
:
SELECT YEAR('2030-65-78');
Resultaat:
+--------------------+ | YEAR('2030-65-78') | +--------------------+ | NULL | +--------------------+ 1 row in set, 1 warning (0.001 sec)
Controleer de waarschuwing:
SHOW WARNINGS;
Resultaat:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Ontbrekend argument
Bellen YEAR()
met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:
SELECT YEAR();
Resultaat:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
En nog een voorbeeld:
SELECT YEAR('2030-12-10', '2031-12-10');
Resultaat:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '2031-12-10')' at line 1