I MariaDB, LAST_DAY()
er en indbygget dato- og tidsfunktion, der returnerer den sidste dag i måneden for en given dato.
Den accepterer ét argument, som er den dato, som du vil finde den sidste dag i måneden.
Syntaks
Syntaksen ser sådan ud:
LAST_DAY(date)
Hvor date
er det datoudtryk, som du vil finde den sidste dag i måneden.
Eksempel
Her er et eksempel:
SELECT LAST_DAY('2030-02-01');
Resultat:
+------------------------+ | LAST_DAY('2030-02-01') | +------------------------+ | 2030-02-28 | +------------------------+
I dette tilfælde bruger vi en dato i februar. Som det viser sig, har februar 28 dage i det år.
Her er, hvad der sker, hvis vi øger datoen til det næste skudår:
SELECT LAST_DAY('2032-02-01');
Resultat:
+------------------------+ | LAST_DAY('2032-02-01') | +------------------------+ | 2032-02-29 | +------------------------+
Dato-tidsværdier
Det fungerer også med datetime-værdier:
SELECT LAST_DAY('2030-02-01 10:30:45');
Resultat:
+---------------------------------+ | LAST_DAY('2030-02-01 10:30:45') | +---------------------------------+ | 2030-02-28 | +---------------------------------+
Nul datoer
Nul datoer resulterer i null
.
Eksempel:
SELECT LAST_DAY('0000-00-00');
Resultat:
+------------------------+ | LAST_DAY('0000-00-00') | +------------------------+ | NULL | +------------------------+
Numeriske datoer
Det er også muligt at videregive datoer som et tal, så længe det giver mening som en dato.
Eksempel
SELECT LAST_DAY(20301125);
Resultat:
+--------------------+ | LAST_DAY(20301125) | +--------------------+ | 2030-11-30 | +--------------------+
Eller endda følgende (som bruger et tocifret årstal):
SELECT LAST_DAY(301125);
Resultat:
+------------------+ | LAST_DAY(301125) | +------------------+ | 2030-11-30 | +------------------+
Men det skal give mening som en date. Her er, hvad der sker, hvis jeg øger dagsdelen til en ugyldig dag:
SELECT LAST_DAY(20301135);
Resultat:
+--------------------+ | LAST_DAY(20301135) | +--------------------+ | NULL | +--------------------+ 1 row in set, 1 warning (0.000 sec)
Vi kan tjekke advarslen sådan her:
SHOW WARNINGS;
Resultat:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
Andre afgrænsninger
Du kan bruge andre skilletegn for datoen. MariaDB er ret tilgivende, når det kommer til afgrænsninger på datoer. Her er nogle gyldige eksempler:
SELECT
LAST_DAY('2030/06/25'),
LAST_DAY('2030,06,25'),
LAST_DAY('2030:06:25'),
LAST_DAY('2030;06!25');
Resultat (ved hjælp af lodret output):
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
Aktuel dato
Vi kan sende NOW()
som datetime-argument for at bruge den aktuelle dato:
SELECT
NOW(),
LAST_DAY(NOW());
Resultat:
+---------------------+-----------------+ | NOW() | LAST_DAY(NOW()) | +---------------------+-----------------+ | 2021-05-18 09:39:01 | 2021-05-31 | +---------------------+-----------------+
Ugyldige argumenter
Når et ugyldigt argument sendes, LAST_DAY()
returnerer null
:
SELECT LAST_DAY('2030-65-78');
Resultat:
+------------------------+ | LAST_DAY('2030-65-78') | +------------------------+ | NULL | +------------------------+ 1 row in set, 1 warning (0.000 sec)
Tjek advarslen:
SHOW WARNINGS;
Resultat:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Manglende argument
Kalder LAST_DAY()
med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
SELECT LAST_DAY();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'
Og endnu et eksempel:
SELECT LAST_DAY('2030-12-10', '2031-12-10');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'