sql >> Databáze >  >> RDS >> MariaDB

Jak ADDDATE() funguje v MariaDB

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

  1. Jak může CTE pomoci při psaní složitých a účinných dotazů:Perspektiva výkonu

  2. Získejte dotaz ze souboru v SPRING BOOT pomocí @Query

  3. Jak navrhnout databázi mysql pro více tenantů

  4. Jak nainstalovat a nakonfigurovat MaxScale pro MariaDB