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,000001
Slož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