V MySQL můžete použít DATE_SUB()
funkce pro odečtení určitého času od data. Můžete jej použít například k odečtení 7 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.
Tato funkce je podobná DATE_ADD()
, kromě toho, že od data odečítá, místo aby k němu přidával.
Syntaxe
Syntaxe vypadá takto:
DATE_SUB(date,INTERVAL expr unit)
Příklad 1 – Základní použití
Zde je 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 poskytnutého prvním argumentem.
Příklad 2 – Jiné jednotky data
Jednotky můžete zadat 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 – Časové jednotky
Od hodnoty data/času můžete také odečíst časové jednotky. 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 současně. Můžete například zadat hodiny a minuty. Takhle.
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
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“ |
Můžete také použít SUBDATE()
funkce, která dělá totéž (je to synonymum pro DATE_SUB()
funkce při použití stejné syntaxe).
Navíc syntaxe SUBDATE()
má druhý tvar, což je zkrácená metoda odečítání určitého počtu dní od data. Další informace naleznete v části Příklady SUBDATE() v MySQL.