I MySQL kan du bruge DATE_SUB()
-funktionen til at trække et bestemt tidsrum fra en dato. Du kan f.eks. bruge den til at trække 7 dage fra en given dato. Du kan angive, om der skal trækkes dage, uger, måneder, kvartaler, år osv. fra. Du kan også trække en tidsværdi fra, f.eks. sekunder, mikrosekunder osv.
Denne funktion svarer til DATE_ADD()
, bortset fra at den trækker fra en dato i stedet for at lægge til den.
Syntaks
Syntaksen lyder således:
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 den dato, der er angivet ved 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. Du kan f.eks. angive timer og minutter. På denne måde.
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
Den følgende tabel viser de gyldige enhedsværdier og deres forventede format.
unit Værdi |
Forventet expr Format |
---|---|
MICROSECOND | MICROSECONDS |
SEKUND | SEKUND |
MINUT | MINUTTER |
TIME | TIME |
TIME | |
DAG | DAGE |
UGE | UGER |
MÅNED | MÅNEDER |
KVARTAL | KVARTAL |
ÅR | ÅR |
SEKUND_MIKROSEKUND | ‘SEKUNDER.MIKROSEKUNDER’ |
MINUT_MIKROSEKUND | ‘MINUTTER:SEKUNDER.MIKROSEKUNDER’ |
MINUT_SEKUND | ‘MINUTTER:SEKUNDER’ |
TIME_MIKROSEKUND | ‘TIMER:MINUTTER:SEKUNDER.MIKROSEKUNDER’ |
TIME_SEKUND | ‘TIMER:MINUTTER:SEKUNDER’ |
TIME_MINUT | ‘TIMER:MINUTTER’ |
DAG_MIKROSEKUND | ‘DAGE TIMER:MINUTTER:SEKUNDER.MIKROSEKUNDER’ |
DAG_SEKUNDER | ‘DAGE TIMER:MINUTTER:SEKUNDER’ |
DAG_MINUTTER | ‘DAGE TIMER:MINUTTER’ |
DAY_HOUR | ‘DAGE TIMER’ |
YEAR_MONTH | ‘ÅR-MONTHS’ |
Du kan også bruge funktionen SUBDATE()
til at gøre det samme (det er et synonym for funktionen DATE_SUB()
, når du bruger den samme syntaks).
Dertil kommer, at syntaksen for SUBDATE()
har en anden form, som er en kortfattet metode til at trække et bestemt antal dage fra en dato. For flere oplysninger, se SUBDATE() Eksempler i MySQL.