I MySQL kan du använda DATE_SUB()
funktion 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, etc. Du kan också subtrahera ett tidsvärde, såsom sekunder, mikrosekunder, etc.
Den här funktionen liknar DATE_ADD()
, förutom att det subtraherar från ett datum istället för att lägga 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 av det första argumentet.
Exempel 2 – Andra datumenheter
Du kan ange enheterna i dagar, veckor, månader, år, etc. 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 | +---------------------+
Förväntade värden
Följande tabell visar giltiga enhetsvärden och deras förväntade format.
unit Värde | Förväntat expr Format |
---|---|
MICROSECOND | MIKROSECONDS |
ANDRA | sekunder |
MINUT | MINUTTER |
TIMME | TIMMAR |
DAG | DAGAR |
VECKAN | VECKOR |
MÅNAD | MÅNADER |
KVARTAL | KVARTER |
ÅR | ÅR |
SECOND_MICROSECOND | ‘SECONDS.MICROSECONDS’ |
MINUTE_MICROSECOND | ‘MINUTES:SECONDS.MICROSECONDS’ |
MINUTE_SECOND | 'MINUTTER:SECONDS' |
HOUR_MICROSECOND | 'TIMMAR:MINUTTER:SECONDS.MICROSECONDS' |
HOUR_SECOND | 'TIMMAR:MINUTTER:SEKUNDER' |
HOUR_MINUTE | 'TIMMAR:MINUTTER' |
DAY_MICROSECOND | ‘DAGAR TIMMER:MINUTTER:SECONDS.MICROSECONDS’ |
DAY_SECOND | ‘DAGAR TIMMAR:MINUTTER:SECONDS’ |
DAY_MINUTE | ‘DAGAR TIMMAR:MINUTTER’ |
DAY_HOUR | 'DAGAR TIMMER' |
YEAR_MONTH | 'ÅR-MÅNADER' |
Du kan också använda SUBDATE()
funktion för att göra samma sak (det är en synonym för DATE_SUB()
funktion när du använder samma syntax).
Dessutom syntaxen för SUBDATE()
har en andra form, som är en förkortad metod för att subtrahera ett visst antal dagar från ett datum. För mer information, se SUBDATE()-exempel i MySQL.