sql >> Databasteknik >  >> RDS >> Mysql

DATE_SUB() Exempel – MySQL

I MySQL kan du använda DATE_SUB() funktion för att subtrahera en viss tid från ett datum. Du kan till exempel använda den för att subtrahera 7 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.

Den här funktionen liknar DATE_ADD() , förutom att det subtraherar från ett datum istället för att lägga till det.

Syntax

Syntaxen ser ut så här:

DATE_SUB(date,INTERVAL expr unit)

Exempel 1 – Grundläggande användning

Här är ett exempel på användning.

SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;

Resultat:

+------------+
| Result     |
+------------+
| 2021-05-02 |
+------------+

Detta exempel subtraherar 5 dagar från det datum som anges av det första argumentet.

Exempel 2 – Andra datumenheter

Du kan ange enheterna i dagar, veckor, månader, år, etc. Här är några exempel.

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 |
+------------+------------+------------+-------------+------------+

Exempel 3 – Tidsenheter

Du kan också subtrahera tidsenheter från ett datum/tidsvärde. Här är ett exempel.

SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;

Resultat:

+---------------------+
| Result              |
+---------------------+
| 2021-05-07 05:00:00 |
+---------------------+

Och du kan ange flera enheter samtidigt. Du kan till exempel ange timmar och minuter. Så här.

SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;

Resultat:

+---------------------+
| Result              |
+---------------------+
| 2021-05-07 08:30: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
TIMME 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:SEKUNDER'
HOUR_MINUTE 'TIMMAR:MINUTTER'
DAY_MICROSECOND ‘DAGAR TIMMER:MINUTTER:SECONDS.MICROSECONDS’
DAY_SECOND ‘DAGAR TIMMAR:MINUTTER:SECONDS’
DAY_MINUTE ‘DAGAR TIMMAR:MINUTTER’
DAY_HOUR 'DAGAR TIMMER'
YEAR_MONTH 'ÅR-MÅNADER'

Du kan också använda SUBDATE() funktion för att göra samma sak (det är en synonym för DATE_SUB() funktion när du använder samma syntax).

Dessutom syntaxen för SUBDATE() har en andra form, som är en förkortad metod för att subtrahera ett visst antal dagar från ett datum. För mer information, se SUBDATE()-exempel i MySQL.


  1. MariaDB JSON_LOOSE() Förklarad

  2. Hämta meddelanden från Mailbox med PL/SQL Mail_Client API

  3. Varför har vissa kommandon ingen effekt i psql?

  4. PostgreSQL array_agg ordning