V MariaDB, LAST_DAY()
je vestavěná funkce data a času, která vrací poslední den v měsíci pro dané datum.
Přijímá jeden argument, což je datum, pro které chcete najít poslední den v měsíci.
Syntaxe
Syntaxe vypadá takto:
LAST_DAY(date)
Kde date
je výraz data, pro který chcete najít poslední den v měsíci.
Příklad
Zde je příklad:
SELECT LAST_DAY('2030-02-01');
Výsledek:
+------------------------+ | LAST_DAY('2030-02-01') | +------------------------+ | 2030-02-28 | +------------------------+
V tomto případě používáme datum v únoru. Jak se ukázalo, únor má v tom roce 28 dní.
Zde je to, co se stane, když zvýšíme datum na další přestupný rok:
SELECT LAST_DAY('2032-02-01');
Výsledek:
+------------------------+ | LAST_DAY('2032-02-01') | +------------------------+ | 2032-02-29 | +------------------------+
Hodnoty data a času
Funguje také s hodnotami datetime:
SELECT LAST_DAY('2030-02-01 10:30:45');
Výsledek:
+---------------------------------+ | LAST_DAY('2030-02-01 10:30:45') | +---------------------------------+ | 2030-02-28 | +---------------------------------+
Nula dat
Výsledkem nulových dat je null
.
Příklad:
SELECT LAST_DAY('0000-00-00');
Výsledek:
+------------------------+ | LAST_DAY('0000-00-00') | +------------------------+ | NULL | +------------------------+
Číselná data
Je také možné předávat data jako číslo, pokud to dává smysl jako datum.
Příklad
SELECT LAST_DAY(20301125);
Výsledek:
+--------------------+ | LAST_DAY(20301125) | +--------------------+ | 2030-11-30 | +--------------------+
Nebo dokonce následující (který používá dvouciferný rok):
SELECT LAST_DAY(301125);
Výsledek:
+------------------+ | LAST_DAY(301125) | +------------------+ | 2030-11-30 | +------------------+
Ale jako rande to musí dávat smysl. Když zvětším část dne na neplatný den, stane se toto:
SELECT LAST_DAY(20301135);
Výsledek:
+--------------------+ | LAST_DAY(20301135) | +--------------------+ | NULL | +--------------------+ 1 row in set, 1 warning (0.000 sec)
Varování můžeme zkontrolovat takto:
SHOW WARNINGS;
Výsledek:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
Další oddělovače
Pro datum můžete použít jiné oddělovače. MariaDB je docela shovívavá, pokud jde o oddělovače dat. Zde je několik platných příkladů:
SELECT
LAST_DAY('2030/06/25'),
LAST_DAY('2030,06,25'),
LAST_DAY('2030:06:25'),
LAST_DAY('2030;06!25');
Výsledek (při použití vertikálního výstupu):
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
Aktuální datum
Můžeme předat NOW()
jako argument datetime pro použití aktuálního data:
SELECT
NOW(),
LAST_DAY(NOW());
Výsledek:
+---------------------+-----------------+ | NOW() | LAST_DAY(NOW()) | +---------------------+-----------------+ | 2021-05-18 09:39:01 | 2021-05-31 | +---------------------+-----------------+
Neplatné argumenty
Při předání neplatného argumentu LAST_DAY()
vrátí null
:
SELECT LAST_DAY('2030-65-78');
Výsledek:
+------------------------+ | LAST_DAY('2030-65-78') | +------------------------+ | NULL | +------------------------+ 1 row in set, 1 warning (0.000 sec)
Zkontrolujte varování:
SHOW WARNINGS;
Výsledek:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Chybí argument
Volání LAST_DAY()
s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:
SELECT LAST_DAY();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'
A další příklad:
SELECT LAST_DAY('2030-12-10', '2031-12-10');
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'