Dans MariaDB, YEAR() est une fonction de date et d'heure intégrée qui renvoie l'année à partir d'une expression de date donnée.
Il accepte un argument, qui est la date à partir de laquelle vous voulez extraire l'année.
Il renvoie l'année sous la forme d'un nombre dans la plage 1000 à 9999 . Pour les dates nulles (par exemple 0000-00-00 ), le résultat est 0 .
Syntaxe
La syntaxe ressemble à ceci :
YEAR(date)
Où date est l'expression de date à partir de laquelle obtenir l'année.
Exemple
Voici un exemple :
SELECT YEAR('2030-08-01'); Résultat :
+--------------------+| ANNEE('2030-08-01') |+--------------------+| 2030 |+--------------------+ Valeurs DateHeure
Cela fonctionne également avec les valeurs datetime :
SELECT YEAR('2030-08-01 10:30:45'); Résultat :
+-----------------------------+| ANNEE('2030-08-01 10:30:45') |+-----------------------------+| 2030 |+--------------------------------------+ Dates zéro
Les dates nulles donnent 0 .
Exemple :
SELECT YEAR('0000-00-00'); Résultat :
+--------------------+| ANNEE('0000-00-00') |+--------------------+| 0 |+--------------------+ Dates numériques
Il est également possible de transmettre des dates sous forme de nombre, tant que cela a du sens en tant que date.
Exemple
SELECT YEAR(20301125); Résultat :
+----------------+| ANNEE(20301125) |+----------------+| 2030 |+----------------+
Ou même le suivant (qui utilise une année à deux chiffres) :
SELECT YEAR(301125); Résultat :
+--------------+| ANNEE(301125) |+--------------+| 2030 |+--------------+
Mais ça doit avoir un sens comme date. Voici ce qui se passe si j'augmente la partie jour à un jour non valide :
SELECT YEAR(20301135); Résultat :
+----------------+| ANNEE(20301135) |+----------------+| NULL |+----------------+1 ligne dans l'ensemble, 1 avertissement (0.000 sec)
Nous pouvons vérifier l'avertissement comme ceci :
SHOW WARNINGS; Résultat :
+---------+------+---------------------------------- ---------+| Niveau | Codage | Message |+---------+------+------------------------------ --------+| Avertissement | 1292 | Valeur de date/heure incorrecte :'20301135' |+---------+------+------------------------ --------------+
Autres délimiteurs
Vous pouvez utiliser d'autres délimiteurs pour la date. MariaDB est assez indulgent en ce qui concerne les délimiteurs de dates. Voici quelques exemples valides :
SELECT
YEAR('2030/06/25'),
YEAR('2030,06,25'),
YEAR('2030:06:25'),
YEAR('2030;06!25'); Résultat (en utilisant la sortie verticale) :
ANNEE('2030/06/25'):2030ANNEE('2030,06,25'):2030ANNEE('2030:06:25'):2030ANNEE('2030;06!25'):2030 Date actuelle
Nous pouvons passer NOW() comme argument datetime pour utiliser la date actuelle :
SELECT
NOW(),
YEAR(NOW());
Résultat :
+---------------------+-------------+| MAINTENANT() | ANNEE(MAINTENANT()) |+---------------------+----------------------+| 2021-05-18 08:55:02 | 2021 |+---------------------+-------------+
Arguments invalides
Lorsqu'un argument invalide est passé, YEAR() renvoie null :
SELECT YEAR('2030-65-78');
Résultat :
+--------------------+| ANNEE('2030-65-78') |+--------------------+| NULL |+--------------------+1 ligne dans l'ensemble, 1 avertissement (0,001 sec)
Vérifiez l'avertissement :
SHOW WARNINGS;
Résultat :
+---------+------+---------------------------------- -----------+| Niveau | Codage | Message |+---------+------+------------------------------ ----------+| Avertissement | 1292 | Valeur datetime incorrecte :'2030-65-78' |+---------+------+-------------------- --------------------+
Argument manquant
Appel de YEAR() avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :
SELECT YEAR();
Résultat :
ERROR 1064 (42000) :vous avez une erreur dans votre syntaxe SQL ; consultez le manuel qui correspond à la version de votre serveur MariaDB pour la bonne syntaxe à utiliser près de ')' à la ligne 1
Et un autre exemple :
SELECT YEAR('2030-12-10', '2031-12-10');
Résultat :
ERROR 1064 (42000) :vous avez une erreur dans votre syntaxe SQL ; consultez le manuel qui correspond à la version de votre serveur MariaDB pour la bonne syntaxe à utiliser près de ''2031-12-10')' à la ligne 1