V MariaDB ADDDATE()
je vestavěná funkce data a času, která provádí aritmetiku data.
Umožňuje vám změnit datum zadáním data, jednotky, kterou chcete přidat, a částky, kterou chcete přidat. Pokud potřebujete odečíst datum o určitý interval, můžete předat zápornou částku.
ADDDATE()
má také zkratkovou syntaxi, která vám umožňuje přidat k datu daný počet dní.
Syntaxe
ADDDATE()
funkce má dvě syntaxe.
Syntaxe 1:
ADDDATE(expr,days)
Kde expr
je datum a days
je počet dní, které se mají přidat.
Syntaxe 2:
ADDDATE(date,INTERVAL expr unit)
Kde date
je datum změny, expr
je množství, které se má přidat, a unit
je jednotka, která se má přidat (např. sekunda, minuta atd.).
Při použití této syntaxe ADDDATE()
je synonymem pro DATE_ADD()
.
Příklad – Syntaxe 1
Zde je příklad použití první syntaxe:
SELECT ADDDATE('2021-05-01', 1);
Výsledek:
+--------------------------+| ADDDATE('2021-05-01', 1) |+--------------------------+| 2021-05-02 |+--------------------------+
V případě potřeby můžeme zahrnout i časovou část:
SELECT ADDDATE('2021-05-01 10:00:00', 1);
Výsledek:
+-----------------------------------+| ADDDATE('2021-05-01 10:00:00', 1) |+------------------------------- ----+| 2021-05-02 10:00:00 |+-----------------------------------+Zde jsou dva alternativní způsoby, jak udělat stejnou věc:
SELECT DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1", '2021-05-01 10:00:00' + INTERVAL 1 DAY AS "Result 2";
Výsledek:
+---------------------+---------------------+| Výsledek 1 | Výsledek 2 |+---------------------+---------------------+| 2021-05-02 10:00:00 | 2021-05-02 10:00:00 |+---------------------+----------------- -----+Příklad – Syntaxe 2
Zde je příklad použití druhé syntaxe:
SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR);
Výsledek:
+---------------------------------------------- ---+| ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HODINA) |+----------------------------- ---------------------+| 2021-05-31 11:00:00 |+--------------------------------------- -----------+Tato syntaxe nám umožňuje přidávat k datu další jednotky (tedy nejen dny). Zde jsem k datu přidal hodinu, ale stejně tak jsem mohl přidat minuty, sekundy, měsíce, dny, roky atd. Pokračujte ve čtení pro příklady.
Zde jsou dvě alternativní metody, jak dosáhnout stejného výsledku jako výše uvedený příklad:
SELECT DATE_ADD('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1", '2021-05-31 10:00:00' + INTERVAL 1 HOUR AS "Result 2";
Výsledek:
+---------------------+---------------------+| Výsledek 1 | Výsledek 2 |+---------------------+---------------------+| 2021-05-31 11:00:00 | 2021-05-31 11:00:00 |+---------------------+----------------- -----+Záporné intervaly
Zadáním záporného intervalu se tato částka odečte od data.
Příklad:
SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR);
Výsledek:
+---------------------------------------------- ----+| ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HODINA) |+---------------------------- -----------------------+| 2021-05-31 09:00:00 |+--------------------------------------- ------------+Další jednotky
Zde je příklad, který přidává interval 1 k různým jednotkám data a času:
SELECT ADDDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;
Výsledek (při použití vertikálního výstupu):
ROK:2022-05-01 10:00:00 MĚSÍC:2021-06-01 10:00:00 DEN:2021-05-02 10:00:00 HOD:2021-05-01 11:00:00 MINUTA:2021-05-01 10:01:00 DRUHÁ:2021-05-01 10:00:01 MIKROSEKUNDA:2021-05-01 10:00:00,000001Složené jednotky
Zde je příklad použití složených jednotek:
SELECT ADDDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH", ADDDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND", ADDDATE('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Výsledek:
+---------------------+----------------------+-- --------------------+| ROK_MĚSÍC | HOUR_SECOND | DAY_MINUTE |+---------------------+---------------------+--- ------------------+| 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 |+---------------------+----------------- -----+---------------------+Neplatná data
Předávání
null
pro datum vrátínull
:SELECT ADDDATE(null, INTERVAL 1 YEAR);
Výsledek:
+--------------------------------+| ADDDATE(null, INTERVAL 1 ROK) |+--------------------------------+| NULL |+--------------------------------+Chybí argument
Volání
ADDDATE()
s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:SELECT ADDDATE();
Výsledek:
ERROR 1064 (42000):Máte chybu v syntaxi SQL; zkontrolujte příručku, která odpovídá verzi vašeho serveru MariaDB, kde najdete správnou syntaxi, která se má použít poblíž ')' na řádku 1