sql >> Database teknologi >  >> RDS >> Mysql

DATE_SUB() Eksempler – MySQL

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.


  1. Sådan opretter du forbindelse til MySQL ved hjælp af Node.js

  2. 11 måder at finde dublerede rækker, mens du ignorerer den primære nøgle i SQLite

  3. Sådan overvindes utilsigtet sletning af data i MySQL &MariaDB

  4. Hvordan opdaterer jeg automatisk et tidsstempel i PostgreSQL