A MySQL-ben a DATE_SUB() függvénnyel kivonhat egy megadott időtartamot egy dátumból. Például használhatja arra, hogy egy adott dátumból kivonjon 7 napot. Megadhatja, hogy napokat, heteket, hónapokat, negyedéveket, éveket stb. vonjon le. Kivonhat egy időértéket is, például másodperceket, mikroszekundumokat stb.
Ez a függvény hasonló a DATE_ADD()-hez, azzal a különbséggel, hogy a dátumból kivon, nem pedig hozzáad.
Szintaktika
A szintaxis így néz ki:
DATE_SUB(date,INTERVAL expr unit)
Példa 1 – Alapvető használat
Íme egy használati példa.
SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;
Eredmény:
+------------+| Result |+------------+| 2021-05-02 |+------------+
Ez a példa 5 napot von le az első argumentummal megadott dátumból.
Példa 2 – Más dátumegységek
A mértékegységeket napokban, hetekben, hónapokban, években stb. adhatja meg. Íme néhány példa.
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';
Eredmény:
+------------+------------+------------+-------------+------------+| 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élda 3 – Időegységek
A dátum/idő értékéből időegységeket is kivonhat. Íme egy példa.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;
Eredmény:
+---------------------+| Result |+---------------------+| 2021-05-07 05:00:00 |+---------------------+
És egyszerre több egységet is megadhat. Például órákat és perceket is megadhat. Például így:
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;
Eredmény:
+---------------------+| Result |+---------------------+| 2021-05-07 08:30:00 |+---------------------+
Várt értékek
A következő táblázat az érvényes egységértékeket és azok várható formátumát mutatja.
unit Érték |
Várható expr Formátum |
|
|---|---|---|
| MIKROSZEKUND | MIKROSZEKUND | |
| MÁSODPERC | MÁSODPERC | |
| PERC | PERC | |
| ÓRA | ÓRÁS | ÓRA |
| NAP | NAPOK | |
| HÉT | HETEK | |
| HÓNAP | HÓNAPOK | |
| NEGYEDÉV | NEGYEDÉV | |
| ÉV | ÉV | |
| MÁSODPERC_MIKROMÁSODPERC | ‘MÁSODPERC.MICROSECONDS’ | |
| MINUTE_MICROSECOND | ‘MINUTES:SECONDS.MICROSECONDS’ | |
| MINUTE_SECOND | ‘MINUTES:SECONDS’ | |
| HOUR_MICROSECOND | ‘HOURS:MINUTES:SECONDS.MIKROMÁSODPERC’ | |
| ÓRA_MÁSODPERC | ‘ÓRA:PERC:MÁSODPERC’ | |
| ÓRA_PERC | ‘ÓRA:PERC’ | |
| NAP_MIKROMÁSODPERC | ‘NAP ÓRA:PERC:MÁSODPERC.MIKROMÁSODPERC’ | |
| NAP_MIKROSZEKUNDUM | ‘NAP ÓRÁK:PERCEK:MÁSODPERCEK’ | |
| NAP_PERC | ‘NAP ÓRÁK:PERC’ | |
| NAP_ÓRA | ‘NAPOK ÓRÁK’ | |
| ÉV_HÓNAP | ‘ÉVEK-MONTHS’ |
Az SUBDATE() függvényt is használhatod ugyanerre a célra (ez a DATE_SUB() függvény szinonimája, ha ugyanazt a szintaxist használod).
Az SUBDATE() szintaxisnak van egy második formája is, amely egy rövidített módszer egy bizonyos számú nap kivonására egy dátumból. További információért lásd: SUBDATE() példák a MySQL-ben.