V MySQL můžete použít SUBDATE()
funkce pro odečtení určitého času od data. Můžete jej například použít k odečtení 10 dnů od dané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, jako jsou sekundy, mikrosekundy atd.
Při použití první syntaxe uvedené níže, SUBDATE()
funkce je synonymem pro DATE_SUB()
funkce (podobně jako ADDDATE()
je synonymem pro DATE_ADD()
při použití stejné syntaxe).
Syntaxe
Tuto funkci můžete použít dvěma následujícími způsoby:
SUBDATE(date,INTERVAL expr unit)
Nebo
SUBDATE(expr,days)
Příklad 1 – První syntaxe
Zde je příklad použití první formy syntaxe.
SELECT SUBDATE('2018-05-10', INTERVAL 2 DAY) AS Result;
Výsledek:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Tento příklad odečte 2 dny od data poskytnutého prvním argumentem.
Příklad 2 – Druhá syntaxe
Tento příklad by mohl být přepsán následovně:
SELECT SUBDATE('2018-05-10', 2) AS Result;
Výsledek:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Toto používá druhou formu syntaxe. Druhý argument je celé číslo, které představuje, kolik dní by se mělo odečíst od data poskytnutého prvním argumentem.
Jak již bylo zmíněno, SUBDATE()
je synonymem pro DATE_SUB()
, ale pouze při použití první syntaxe. Druhá syntaxe je dostupná pouze v SUBDATE()
.
Příklad 3 – Jiné jednotky data
Jednou z výhod první formy syntaxe je, že můžete určit, zda se mají odečítat dny, týdny, měsíce, roky atd. Zde je několik příkladů.
SELECT '2018-05-10' AS 'Start Date', SUBDATE('2018-05-10', INTERVAL 2 WEEK) AS '-2 Weeks', SUBDATE('2018-05-10', INTERVAL 2 MONTH) AS '-2 Months', SUBDATE('2018-05-10', INTERVAL 2 QUARTER) AS '-2 Quarters', SUBDATE('2018-05-10', INTERVAL 2 YEAR) AS '-2 Years';
Výsledek:
+------------+------------+------------+-------------+------------+ | Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years | +------------+------------+------------+-------------+------------+ | 2018-05-10 | 2018-04-26 | 2018-03-10 | 2017-11-10 | 2016-05-10 | +------------+------------+------------+-------------+------------+
Příklad 4 – Časové jednotky
Můžete také použít SUBDATE()
k odečtení časových jednotek od hodnoty data/času. Zde je příklad.
SELECT SUBDATE('2018-05-10 01:00:00', INTERVAL 2 HOUR) AS Result;
Výsledek:
+---------------------+ | Result | +---------------------+ | 2018-05-09 23:00:00 | +---------------------+
Očekávané hodnoty
Následující tabulka ukazuje platné hodnoty jednotek a jejich očekávaný formát.
unit Hodnota | Očekáváno expr Formát |
---|---|
MIKROSECOND | MIKROSEKUNDY |
DRUHÁ | SEKUND |
MINUTE | MINUTY |
HODINA | HODINY |
DEN | DNY |
WEEK | WEEKS |
MĚSÍC | MĚSÍCE |
ČTVRTLETÍ | ČTVRTLETÍ |
ROK | ROKY |
SECOND_MICROSECOND | „SECONDS.MICROSECONDS“ |
MINUTE_MICROSECOND | „MINUTY:SECONDS.MICROSECONDS“ |
MINUTE_SECOND | „MINUTY:SECONDS“ |
HOUR_MICROSECOND | 'HOURS:MINUTES:SECONDS.MICROSECONDS' |
HOUR_SECOND | „HOURS:MINUTES:SECONDS“ |
HOUR_MINUTE | „HOURS:MINUTES“ |
DAY_MICROSECOND | 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' |
DAY_SECOND | „DAYS HOURS:MINUTES:SECONDS“ |
DAY_MINUTE | „DAYS HOURS:MINUTES“ |
DAY_HOUR | „DAYS HOURS“ |
YEAR_MONTH | „ROKY-MĚSÍCE“ |