Dans MariaDB, DAY()
est un synonyme de DAYOFMONTH()
. Il renvoie le jour du mois à partir d'une date donnée.
Il accepte un argument, qui est la date à partir de laquelle vous souhaitez renvoyer le jour du mois.
Le résultat est dans la plage 1
à 31
. Cependant, si la date comporte une partie zéro jour (par exemple '0000-00-00'
ou '2021-00-00'
), le résultat est 0
.
Syntaxe
La syntaxe ressemble à ceci :
DAY(date)
Où date
est la date à partir de laquelle extraire le jour.
Exemple
Voici un exemple :
SELECT DAY('2045-05-18');
Résultat :
+-------------------+| JOUR('2045-05-18') |+-------------------------------+| 18 |+-------------------+
Valeurs DateHeure
Cela fonctionne également avec les valeurs datetime :
SELECT DAY('2045-05-18 01:10:15');
Résultat :
+----------------------------+| JOUR('2045-05-18 01:10:15') |+----------------------------+| 18 |+----------------------------+
Zéro jour
Voici un exemple qui utilise un jour zéro dans la date :
SELECT DAY('0000-00-00');
Résultat :
+-------------------+| JOUR('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 DAY(20220308);
Résultat :
+---------------+| JOUR(20220308) |+---------------+| 8 |+---------------+
Ou même le suivant (qui utilise une année à deux chiffres) :
SELECT DAY(220308);
Résultat :
+-------------+| JOUR(220308) |+-------------+| 8 |+-------------+
Mais ça doit avoir un sens comme date. Voici ce qui se passe si j'augmente la partie jour à un jour non valide :
SELECT DAY(220358);
Résultat :
+-------------+| JOUR(220358) |+-------------+| NULL |+-------------+
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
DAY('2028/12/30'),
DAY('2028,12,30'),
DAY('2028:12:30'),
DAY('2028;12!30');
Résultat (en utilisant la sortie verticale) :
DAY('2028/12/30') :30DAY('2028,12,30') :30DAY('2028:12:30') :30DAY('2028;12!30') :30Date actuelle
Nous pouvons passer
NOW()
comme argument de date pour utiliser la date actuelle :SELECT NOW(), DAY(NOW());
Résultat :
+---------------------+------------+| MAINTENANT() | JOUR(MAINTENANT()) |+---------------------+--------------------+| 2021-05-13 09:41:03 | 13 |+---------------------+------------+Arguments invalides
Lorsqu'un argument invalide est passé,
DAY()
renvoienull
:SELECT DAY('Oops!');
Résultat :
+--------------+| JOUR('Oups !') |+--------------+| NULL |+--------------+Argument manquant
Appel de
DAY()
avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :SELECT DAY();
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 1Et un autre exemple :
SELECT DAY('2030-01-25', '2045-05-08');
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 ''2045-05-08')' à la ligne 1