Dans MariaDB, LAST_DAY()
est une fonction de date et d'heure intégrée qui renvoie le dernier jour du mois pour une date donnée.
Il accepte un argument, qui est la date pour laquelle vous voulez trouver le dernier jour du mois.
Syntaxe
La syntaxe ressemble à ceci :
LAST_DAY(date)
Où date
est l'expression de date pour laquelle vous souhaitez trouver le dernier jour du mois.
Exemple
Voici un exemple :
SELECT LAST_DAY('2030-02-01');
Résultat :
+------------------------+ | LAST_DAY('2030-02-01') | +------------------------+ | 2030-02-28 | +------------------------+
Dans ce cas, nous utilisons une date en février. Il s'avère que février compte 28 jours cette année-là.
Voici ce qui se passe si nous incrémentons la date à l'année bissextile suivante :
SELECT LAST_DAY('2032-02-01');
Résultat :
+------------------------+ | LAST_DAY('2032-02-01') | +------------------------+ | 2032-02-29 | +------------------------+
Valeurs DateHeure
Cela fonctionne également avec les valeurs datetime :
SELECT LAST_DAY('2030-02-01 10:30:45');
Résultat :
+---------------------------------+ | LAST_DAY('2030-02-01 10:30:45') | +---------------------------------+ | 2030-02-28 | +---------------------------------+
Dates zéro
Les dates nulles donnent null
.
Exemple :
SELECT LAST_DAY('0000-00-00');
Résultat :
+------------------------+ | LAST_DAY('0000-00-00') | +------------------------+ | NULL | +------------------------+
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 LAST_DAY(20301125);
Résultat :
+--------------------+ | LAST_DAY(20301125) | +--------------------+ | 2030-11-30 | +--------------------+
Ou même le suivant (qui utilise une année à deux chiffres) :
SELECT LAST_DAY(301125);
Résultat :
+------------------+ | LAST_DAY(301125) | +------------------+ | 2030-11-30 | +------------------+
Mais ça doit avoir un sens comme date. Voici ce qui se passe si j'augmente la partie jour à un jour non valide :
SELECT LAST_DAY(20301135);
Résultat :
+--------------------+ | LAST_DAY(20301135) | +--------------------+ | NULL | +--------------------+ 1 row in set, 1 warning (0.000 sec)
Nous pouvons vérifier l'avertissement comme ceci :
SHOW WARNINGS;
Résultat :
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '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
LAST_DAY('2030/06/25'),
LAST_DAY('2030,06,25'),
LAST_DAY('2030:06:25'),
LAST_DAY('2030;06!25');
Résultat (en utilisant la sortie verticale) :
LAST_DAY('2030/06/25'): 2030-06-30 LAST_DAY('2030,06,25'): 2030-06-30 LAST_DAY('2030:06:25'): 2030-06-30 LAST_DAY('2030;06!25'): 2030-06-30
Date actuelle
Nous pouvons passer NOW()
comme argument datetime pour utiliser la date actuelle :
SELECT
NOW(),
LAST_DAY(NOW());
Résultat :
+---------------------+-----------------+ | NOW() | LAST_DAY(NOW()) | +---------------------+-----------------+ | 2021-05-18 09:39:01 | 2021-05-31 | +---------------------+-----------------+
Arguments invalides
Lorsqu'un argument invalide est passé, LAST_DAY()
renvoie null
:
SELECT LAST_DAY('2030-65-78');
Résultat :
+------------------------+ | LAST_DAY('2030-65-78') | +------------------------+ | NULL | +------------------------+ 1 row in set, 1 warning (0.000 sec)
Vérifiez l'avertissement :
SHOW WARNINGS;
Résultat :
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Argument manquant
Appel LAST_DAY()
avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :
SELECT LAST_DAY();
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'
Et un autre exemple :
SELECT LAST_DAY('2030-12-10', '2031-12-10');
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'