MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment LAST_DAY() fonctionne dans MariaDB

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)

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'