I MySQL kan du bruge SUBDATE()
funktion til at trække en bestemt mængde tid fra en dato. For eksempel kan du bruge det til at trække 10 dage fra en given dato. Du kan angive, om dage, uger, måneder, kvartaler, år osv. skal trækkes fra. Du kan også trække en tidsværdi fra, såsom sekunder, mikrosekunder osv.
Når du bruger den første syntaks nedenfor, er SUBDATE()
funktion er et synonym for DATE_SUB()
funktion (ligner ADDDATE()
er et synonym for DATE_ADD()
når du bruger den samme syntaks).
Syntaks
Du kan bruge denne funktion på følgende to måder:
SUBDATE(date,INTERVAL expr unit)
Eller
SUBDATE(expr,days)
Eksempel 1 – Den første syntaks
Her er et eksempel på brug af den første form af syntaksen.
SELECT SUBDATE('2018-05-10', INTERVAL 2 DAY) AS Result;
Resultat:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Dette eksempel trækker 2 dage fra datoen fra det første argument.
Eksempel 2 – Den anden syntaks
Dette eksempel kunne omskrives som følgende:
SELECT SUBDATE('2018-05-10', 2) AS Result;
Resultat:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Dette bruger den anden form af syntaksen. Det andet argument er et heltal, der repræsenterer, hvor mange dage der skal trækkes fra datoen fra det første argument.
Som nævnt SUBDATE()
er et synonym for DATE_SUB()
, men kun når den første syntaks bliver brugt. Den anden syntaks er kun tilgængelig i SUBDATE()
.
Eksempel 3 – Andre datoenheder
En fordel ved den første form for syntaksen er, at du kan angive, om dage, uger, måneder, år osv. skal trækkes fra. Her er nogle eksempler.
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 | +------------+------------+------------+-------------+------------+
Eksempel 4 – Tidsenheder
Du kan også bruge SUBDATE()
at trække tidsenheder fra en dato/tidsværdi. Her er et eksempel.
SELECT SUBDATE('2018-05-10 01:00:00', INTERVAL 2 HOUR) AS Result;
Resultat:
+---------------------+ | Result | +---------------------+ | 2018-05-09 23:00:00 | +---------------------+
Forventede værdier
Følgende tabel viser de gyldige enhedsværdier og deres forventede format.
unit Værdi | Forventet expr Formater |
---|---|
MICROSECOND | MIKROSEKUNDER |
ANDEN | SEKUNDER |
MINUT | MINUTTER |
TIME | TIMER |
DAG | DAGE |
UGE | UGER |
MÅNED | MÅNEDER |
KVART | KVARTERE |
ÅR | ÅR |
SECOND_MICROSECOND | 'SECONDS.MICROSECONDS' |
MINUTE_MICROSECOND | 'MINUTTER:SECONDS.MICROSECONDS' |
MINUTE_SECOND | 'MINUTTER:SECONDS' |
HOUR_MICROSECOND | 'TIMER:MINUTTER:SECONDS.MICROSECONDS' |
HOUR_SECOND | 'TIMER:MINUTTER:SECONDS' |
HOUR_MINUTE | 'TIMER:MINUTTER' |
DAY_MICROSECOND | 'DAGE TIMER:MINUTTER:SECONDS.MICROSECONDS' |
DAY_SECOND | 'DAGE TIMER:MINUTTER:SECONDS' |
DAY_MINUTE | 'DAGE TIMER:MINUTTER' |
DAY_HOUR | 'DAGE TIMER' |
YEAR_MONTH | 'ÅR-MÅNEDER' |