I MySQL kan du bruge DATE_SUB()
funktion til at trække en bestemt mængde tid fra en dato. For eksempel kan du bruge det til at trække 7 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.
Denne funktion ligner DATE_ADD()
, bortset fra at den trækker fra en dato i stedet for at tilføje den.
Syntaks
Syntaksen ser sådan ud:
DATE_SUB(date,INTERVAL expr unit)
Eksempel 1 – Grundlæggende brug
Her er et eksempel på brug.
SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;
Resultat:
+------------+ | Result | +------------+ | 2021-05-02 | +------------+
Dette eksempel trækker 5 dage fra datoen fra det første argument.
Eksempel 2 – Andre datoenheder
Du kan angive enhederne i dage, uger, måneder, år osv. Her er nogle eksempler.
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 | +------------+------------+------------+-------------+------------+
Eksempel 3 – Tidsenheder
Du kan også trække tidsenheder fra en dato/tidsværdi. Her er et eksempel.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;
Resultat:
+---------------------+ | Result | +---------------------+ | 2021-05-07 05:00:00 | +---------------------+
Og du kan angive flere enheder på samme tid. For eksempel kan du angive timer og minutter. Sådan.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;
Resultat:
+---------------------+ | Result | +---------------------+ | 2021-05-07 08:30: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' |
Du kan også bruge SUBDATE()
funktion til at gøre det samme (det er et synonym for DATE_SUB()
funktion, når du bruger den samme syntaks).
Derudover syntaksen for SUBDATE()
har en anden form, som er en stenografisk metode til at trække et bestemt antal dage fra en dato. For mere information, se SUBDATE()-eksempler i MySQL.