Příručka k databázi

V MySQL můžete použít funkci DATE_SUB() k odečtení určitého času od data. Můžete ji například použít k odečtení 7 dní od zadaného data. Můžete určit, zda se mají odečítat dny, týdny, měsíce, čtvrtletí, roky atd. Můžete také odečíst časovou hodnotu, například sekundy, mikrosekundy atd.

Tato funkce je podobná funkci DATE_ADD() s tím rozdílem, že od data neodečítá, ale přičítá.

Syntaxe

Syntaxe vypadá takto:

DATE_SUB(date,INTERVAL expr unit)

Příklad 1 – základní použití

Uvedeme příklad použití.

SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;

Výsledek:

+------------+| Result |+------------+| 2021-05-02 |+------------+

Tento příklad odečte 5 dní od data zadaného prvním argumentem.

Příklad 2 – jiné jednotky data

Můžete zadat jednotky ve dnech, týdnech, měsících, letech atd. Zde je několik příkladů.

SELECT '2021-05-07' AS 'Start Date', DATE_SUB('2021-05-07', INTERVAL 2 WEEK) AS '-2 Weeks', DATE_SUB('2021-05-07', INTERVAL 2 MONTH) AS '-2 Months', DATE_SUB('2021-05-07', INTERVAL 2 QUARTER) AS '-2 Quarters', DATE_SUB('2021-05-07', INTERVAL 2 YEAR) AS '-2 Years';

Výsledek:

+------------+------------+------------+-------------+------------+| Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years |+------------+------------+------------+-------------+------------+| 2021-05-07 | 2021-04-23 | 2021-03-07 | 2020-11-07 | 2019-05-07 |+------------+------------+------------+-------------+------------+

Příklad 3 – Jednotky času

Od hodnoty data/času můžete odečíst také jednotky času. Zde je příklad:

SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;

Výsledek:

+---------------------+| Result |+---------------------+| 2021-05-07 05:00:00 |+---------------------+

A můžete zadat více jednotek najednou. Můžete například zadat hodiny a minuty. Takto:

SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;

Výsledek:

+---------------------+| Result |+---------------------+| 2021-05-07 08:30:00 |+---------------------+

Očekávané hodnoty

V následující tabulce jsou uvedeny platné hodnoty jednotek a jejich očekávaný formát.

.

unit Hodnota Očekávaný expr Formát
MIKROSEKUNDY MIKROSEKUNDY
SEKUNDA SEKUNDY
MINUTA MINUTY
HODINA HODINY
DEN DNY
TÝDEN TÝDNY
MĚSÍC MĚSÍCE
ČTVRTLETÍ ČTVRTLETÍ
ROK ROKY
SEKUNDA_MIKROSEKUNDA ‚SEKUNDY.MIKROSEKUND‘
MINUTA_MIKROSEKUNDA ‚MINUTY:SEKUNDY.MIKROSEKUNDY‘
MINUTA_SEKUNDA ‚MINUTY:SEKUNDY‘
HODINA_MIKROSEKUNDA ‚HODINY:MINUTY:SEKUNDY.MIKROSEKUND‘
HODINA_SEKUNDA ‚HODINY:MINUTY:SEKUNDY‘
HODINA_MINUTA ‚HODINY:MINUTY‘
DEN_MIKROSEKUNDA ‚DNY HODINY:MINUTY:SEKUNDY.MIKROSEKUND‘
DEN_SEKUNDA ‚DNY HODINY:MINUTY:SEKUNDY‘
DEN_MINUTA ‚DNY HODINY:MINUTY‘
DEN_HODINY ‚DNY HODINY‘
ROK_MĚSÍCE ‚ROKY-MONTHS‘

K témuž účelu můžete použít také funkci SUBDATE() (při použití stejné syntaxe je synonymem funkce DATE_SUB()).

Syntaxe funkce SUBDATE() má navíc druhý tvar, který je zkrácenou metodou odečítání určitého počtu dní od data. Další informace naleznete v části Příklady funkce SUBDATE() v MySQL.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.