Database.Guide

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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.