I MySQL kan du använda SUBDATE()
funktion för att subtrahera en angiven tid från ett datum. Du kan till exempel använda den för att subtrahera 10 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.
När du använder den första syntaxen nedan, SUBDATE()
funktion är en synonym för DATE_SUB()
funktion (liknande hur ADDDATE()
är en synonym för DATE_ADD()
när du använder samma syntax).
Syntax
Du kan använda den här funktionen på följande två sätt:
SUBDATE(date,INTERVAL expr unit)
Eller
SUBDATE(expr,days)
Exempel 1 – Den första syntaxen
Här är ett exempel på hur du använder den första formen av syntaxen.
SELECT SUBDATE('2018-05-10', INTERVAL 2 DAY) AS Result;
Resultat:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Detta exempel subtraherar 2 dagar från det datum som anges av det första argumentet.
Exempel 2 – Den andra syntaxen
Detta exempel kan skrivas om som följande:
SELECT SUBDATE('2018-05-10', 2) AS Result;
Resultat:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Detta använder den andra formen av syntaxen. Det andra argumentet är ett heltal som representerar hur många dagar som ska subtraheras från det datum som anges av det första argumentet.
Som nämnts, SUBDATE()
är en synonym för DATE_SUB()
, men bara när den första syntaxen används. Den andra syntaxen är endast tillgänglig i SUBDATE()
.
Exempel 3 – Andra datumenheter
En fördel med den första formen av syntaxen är att du kan ange om du vill subtrahera dagar, veckor, månader, år etc. Här är några exempel.
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';
Resultat:
+------------+------------+------------+-------------+------------+ | 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 | +------------+------------+------------+-------------+------------+
Exempel 4 – Tidsenheter
Du kan också använda SUBDATE()
för att subtrahera tidsenheter från ett datum/tidsvärde. Här är ett exempel.
SELECT SUBDATE('2018-05-10 01:00:00', INTERVAL 2 HOUR) AS Result;
Resultat:
+---------------------+ | Result | +---------------------+ | 2018-05-09 23:00: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 |
TIMMAR | 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:SEKONDER" |
HOUR_MINUTE | 'TIMMAR:MINUTTER' |
DAY_MICROSECOND | ‘DAGAR TIMMER:MINUTTER:SECONDS.MICROSECONDS’ |
DAY_SECOND | ‘DAGAR TIMMAR:MINUTTER:SECONDS’ |
DAY_MINUTE | ‘DAGAR TIMMAR:MINUTTER’ |
DAY_HOUR | 'DAYS TIMMER' |
YEAR_MONTH | 'ÅR-MÅNADER' |