I MariaDB, LAST_DAY()
är en inbyggd datum- och tidsfunktion som returnerar den sista dagen i månaden för ett givet datum.
Den accepterar ett argument, vilket är det datum för vilket du vill hitta den sista dagen i månaden.
Syntax
Syntaxen ser ut så här:
LAST_DAY(date)
Där date
är det datumuttryck som du vill hitta den sista dagen i månaden.
Exempel
Här är ett exempel:
SELECT LAST_DAY('2030-02-01');
Resultat:
+------------------------+ | LAST_DAY('2030-02-01') | +------------------------+ | 2030-02-28 | +------------------------+
I det här fallet använder vi ett datum i februari. Som det visar sig har februari 28 dagar det året.
Så här händer om vi ökar datumet till nästa skottår:
SELECT LAST_DAY('2032-02-01');
Resultat:
+------------------------+ | LAST_DAY('2032-02-01') | +------------------------+ | 2032-02-29 | +------------------------+
Datetime-värden
Det fungerar också med datetime-värden:
SELECT LAST_DAY('2030-02-01 10:30:45');
Resultat:
+---------------------------------+ | LAST_DAY('2030-02-01 10:30:45') | +---------------------------------+ | 2030-02-28 | +---------------------------------+
Noll datum
Noll datum resulterar i null
.
Exempel:
SELECT LAST_DAY('0000-00-00');
Resultat:
+------------------------+ | LAST_DAY('0000-00-00') | +------------------------+ | NULL | +------------------------+
Numeriska datum
Det är också möjligt att skicka datum som ett nummer, så länge det är vettigt som ett datum.
Exempel
SELECT LAST_DAY(20301125);
Resultat:
+--------------------+ | LAST_DAY(20301125) | +--------------------+ | 2030-11-30 | +--------------------+
Eller till och med följande (som använder ett tvåsiffrigt år):
SELECT LAST_DAY(301125);
Resultat:
+------------------+ | LAST_DAY(301125) | +------------------+ | 2030-11-30 | +------------------+
Men det måste vara vettigt som en dejt. Så här händer om jag ökar dagdelen till en ogiltig dag:
SELECT LAST_DAY(20301135);
Resultat:
+--------------------+ | LAST_DAY(20301135) | +--------------------+ | NULL | +--------------------+ 1 row in set, 1 warning (0.000 sec)
Vi kan kontrollera varningen så här:
SHOW WARNINGS;
Resultat:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
Andra avgränsare
Du kan använda andra avgränsare för datumet. MariaDB är ganska förlåtande när det kommer till avgränsare på datum. Här är några giltiga exempel:
SELECT
LAST_DAY('2030/06/25'),
LAST_DAY('2030,06,25'),
LAST_DAY('2030:06:25'),
LAST_DAY('2030;06!25');
Resultat (med vertikal utdata):
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
Aktuellt datum
Vi kan skicka NOW()
som datetime-argument för att använda det aktuella datumet:
SELECT
NOW(),
LAST_DAY(NOW());
Resultat:
+---------------------+-----------------+ | NOW() | LAST_DAY(NOW()) | +---------------------+-----------------+ | 2021-05-18 09:39:01 | 2021-05-31 | +---------------------+-----------------+
Ogiltiga argument
När ett ogiltigt argument skickades, LAST_DAY()
returnerar null
:
SELECT LAST_DAY('2030-65-78');
Resultat:
+------------------------+ | LAST_DAY('2030-65-78') | +------------------------+ | NULL | +------------------------+ 1 row in set, 1 warning (0.000 sec)
Kontrollera varningen:
SHOW WARNINGS;
Resultat:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Argument saknas
Ringer LAST_DAY()
med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:
SELECT LAST_DAY();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'
Och ett annat exempel:
SELECT LAST_DAY('2030-12-10', '2031-12-10');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'