In MariaDB, LAST_DAY()
is een ingebouwde datum- en tijdfunctie die de laatste dag van de maand voor een bepaalde datum retourneert.
Het accepteert één argument, namelijk de datum waarvoor u de laatste dag van de maand wilt vinden.
Syntaxis
De syntaxis gaat als volgt:
LAST_DAY(date)
Waar date
is de datumuitdrukking waarvoor u de laatste dag van de maand wilt vinden.
Voorbeeld
Hier is een voorbeeld:
SELECT LAST_DAY('2030-02-01');
Resultaat:
+------------------------+ | LAST_DAY('2030-02-01') | +------------------------+ | 2030-02-28 | +------------------------+
In dit geval gebruiken we een datum in februari. Het blijkt dat februari in dat jaar 28 dagen heeft.
Dit gebeurt er als we de datum verhogen naar het volgende schrikkeljaar:
SELECT LAST_DAY('2032-02-01');
Resultaat:
+------------------------+ | LAST_DAY('2032-02-01') | +------------------------+ | 2032-02-29 | +------------------------+
Datum/tijd-waarden
Het werkt ook met datetime-waarden:
SELECT LAST_DAY('2030-02-01 10:30:45');
Resultaat:
+---------------------------------+ | LAST_DAY('2030-02-01 10:30:45') | +---------------------------------+ | 2030-02-28 | +---------------------------------+
Nul datums
Nuldatums resulteren in null
.
Voorbeeld:
SELECT LAST_DAY('0000-00-00');
Resultaat:
+------------------------+ | LAST_DAY('0000-00-00') | +------------------------+ | NULL | +------------------------+
Numerieke datums
Het is ook mogelijk om datums als een getal door te geven, zolang het maar logisch is als een datum.
Voorbeeld
SELECT LAST_DAY(20301125);
Resultaat:
+--------------------+ | LAST_DAY(20301125) | +--------------------+ | 2030-11-30 | +--------------------+
Of zelfs het volgende (met een jaartal van twee cijfers):
SELECT LAST_DAY(301125);
Resultaat:
+------------------+ | LAST_DAY(301125) | +------------------+ | 2030-11-30 | +------------------+
Maar het moet logisch zijn als een date. Dit gebeurt er als ik het daggedeelte verhoog naar een ongeldige dag:
SELECT LAST_DAY(20301135);
Resultaat:
+--------------------+ | LAST_DAY(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
LAST_DAY('2030/06/25'),
LAST_DAY('2030,06,25'),
LAST_DAY('2030:06:25'),
LAST_DAY('2030;06!25');
Resultaat (met verticale uitvoer):
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
Huidige datum
We kunnen NOW()
doorgeven als het datetime-argument om de huidige datum te gebruiken:
SELECT
NOW(),
LAST_DAY(NOW());
Resultaat:
+---------------------+-----------------+ | NOW() | LAST_DAY(NOW()) | +---------------------+-----------------+ | 2021-05-18 09:39:01 | 2021-05-31 | +---------------------+-----------------+
Ongeldige argumenten
Wanneer een ongeldig argument is doorgegeven, LAST_DAY()
retourneert null
:
SELECT LAST_DAY('2030-65-78');
Resultaat:
+------------------------+ | LAST_DAY('2030-65-78') | +------------------------+ | NULL | +------------------------+ 1 row in set, 1 warning (0.000 sec)
Controleer de waarschuwing:
SHOW WARNINGS;
Resultaat:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Ontbrekend argument
Bellen LAST_DAY()
met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:
SELECT LAST_DAY();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'
En nog een voorbeeld:
SELECT LAST_DAY('2030-12-10', '2031-12-10');
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'