I MySQL kan du använda funktionen DATE_SUB()
för att subtrahera en viss tid från ett datum. Du kan till exempel använda den för att subtrahera 7 dagar från ett givet datum. Du kan ange om du vill subtrahera dagar, veckor, månader, kvartal, år osv. Du kan också subtrahera ett tidsvärde, t.ex. sekunder, mikrosekunder etc.
Funktionen liknar DATE_ADD()
, förutom att den subtraherar från ett datum i stället för att addera till det.
Syntax
Syntaxen ser ut så här:
DATE_SUB(date,INTERVAL expr unit)
Exempel 1 – Grundläggande användning
Här är ett exempel på användning.
SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;
Resultat:
+------------+| Result |+------------+| 2021-05-02 |+------------+
Detta exempel subtraherar 5 dagar från det datum som anges i det första argumentet.
Exempel 2 – Andra datumenheter
Du kan ange enheterna i dagar, veckor, månader, år osv. Här är några exempel.
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';
Resultat:
+------------+------------+------------+-------------+------------+| 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 |+------------+------------+------------+-------------+------------+
Exempel 3 – Tidsenheter
Du kan också subtrahera tidsenheter från ett datum/tidsvärde. Här är ett exempel.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;
Resultat:
+---------------------+| Result |+---------------------+| 2021-05-07 05:00:00 |+---------------------+
Och du kan ange flera enheter samtidigt. Du kan till exempel ange timmar och minuter. Så här:
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;
Resultat:
+---------------------+| Result |+---------------------+| 2021-05-07 08:30:00 |+---------------------+
Vänliga värden
I följande tabell visas de giltiga enhetsvärdena och deras förväntade format.
unit Värde |
förväntat expr Format |
---|---|
Mikrosekund | Mikrosekund |
SEKUND | SEKUNDER |
MINUT | MINUTER |
TIMME | TIMMAR |
DAG | DAGAR |
VECKA | VECKOR |
MÅNAD | MÅNADER |
KVARTAL | KVARTAL |
ÅR | ÅR |
SEKUND_MIKROSEKUND | ’SEKUNDER.MIKROSEKUNDER” |
MINUT_MIKROSEKUND | ’MINUTER:SEKUNDER.MIKROSEKUNDER’ |
MINUT_SEKUND | ’MINUTER:SEKUNDER’ |
TIMME_MIKROSEKUND | ’TIMMAR:MINUTER:SEKUNDER.MIKROSEKUNDER’ |
TIMME_SEKUND | ’TIMMAR:MINUTER:SEKUNDER’ |
TIMME_MINUT | ’TIMMAR:MINUTER’ |
DAG_MIKROSEKUND | ’DAGAR TIMMAR:MINUTER:SEKUNDER.MIKROSEKUNDER’ |
DAY_SECOND | ’DAGAR TIMMAR:MINUTER:SEKUNDER’ |
DAY_MINUTE | ’DAGAR TIMMAR:MINUTER’ |
DAG_TIMME | ’DAGAR TIMMAR’ |
ÅR_MÅNAD | ’ÅR-MONTHS’ |
Du kan också använda funktionen SUBDATE()
för att göra samma sak (det är en synonym för funktionen DATE_SUB()
när samma syntax används).
Den syntaxen för SUBDATE()
har dessutom en andra form, som är en kortfattad metod för att subtrahera ett visst antal dagar från ett datum. För mer information, se SUBDATE() Examples in MySQL.