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.