sql >> Databasteknik >  >> RDS >> MariaDB

Hur DATE_SUB() fungerar i MariaDB

I MariaDB, DATE_SUB() är en inbyggd datum- och tidsfunktion som låter dig subtrahera ett belopp från ett datum.

Det låter dig ändra ett datum genom att ange datumet, enheten som ska subtraheras och beloppet som ska subtraheras. Du kan skicka ett negativt belopp för att lägga till datumet, istället för att subtrahera från det.

Syntax

Syntaxen ser ut så här:

DATE_SUB(date,INTERVAL expr unit)

Där date är datumet att ändra, expr är beloppet att subtrahera, och unit är den datum/tidsenhet som ska subtraheras (t.ex. sekund, minut, etc).

Exempel

Här är ett grundläggande exempel:

SELECT DATE_SUB('2021-05-31 10:00:00', INTERVAL 1 HOUR);

Resultat:

+--------------------------------------------------+
| DATE_SUB('2021-05-31 10:00:00', INTERVAL 1 HOUR) |
+--------------------------------------------------+
| 2021-05-31 09:00:00                              |
+--------------------------------------------------+

Det är som att göra följande:

SELECT '2021-05-31 10:00:00' - INTERVAL 1 HOUR;

Resultat:

+-----------------------------------------+
| '2021-05-31 10:00:00' - INTERVAL 1 HOUR |
+-----------------------------------------+
| 2021-05-31 09:00:00                     |
+-----------------------------------------+

Negativa intervall

Ange ett negativt intervall lägger till det beloppet från datumet.

Exempel:

SELECT DATE_SUB('2021-05-31 10:00:00', INTERVAL -1 HOUR);

Resultat:

+---------------------------------------------------+
| DATE_SUB('2021-05-31 10:00:00', INTERVAL -1 HOUR) |
+---------------------------------------------------+
| 2021-05-31 11:00:00                               |
+---------------------------------------------------+

Övriga enheter

Här är ett exempel som lägger till ett intervall på 1 till de olika datum- och tidsenheterna:

SELECT 
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 YEAR) AS YEAR,
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 MONTH) AS MONTH,
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 DAY) AS DAY,
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 HOUR) AS HOUR,
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 SECOND) AS SECOND,
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;

Resultat (med vertikal utdata):

       YEAR: 2020-05-10 10:00:00
      MONTH: 2021-04-10 10:00:00
        DAY: 2021-05-09 10:00:00
       HOUR: 2021-05-10 09:00:00
     MINUTE: 2021-05-10 09:59:00
     SECOND: 2021-05-10 09:59:59
MICROSECOND: 2021-05-10 09:59:59.999999

Kompositenheter

Här är ett exempel som använder sammansatta enheter:

SELECT 
    DATE_SUB('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
    DATE_SUB('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
    DATE_SUB('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";

Resultat:

+---------------------+---------------------+---------------------+
| YEAR_MONTH          | HOUR_SECOND         | DAY_MINUTE          |
+---------------------+---------------------+---------------------+
| 2020-03-01 10:00:00 | 2021-05-01 08:34:25 | 2021-05-01 08:30:00 |
+---------------------+---------------------+---------------------+

Nulldatum

Skickar null för datumet returnerar null :

SELECT DATE_SUB(null, INTERVAL 1 YEAR);

Resultat:

+---------------------------------+
| DATE_SUB(null, INTERVAL 1 YEAR) |
+---------------------------------+
| NULL                            |
+---------------------------------+

Argument saknas

Ringer DATE_SUB() med fel antal argument, eller utan att skicka några argument resulterar i ett fel:

SELECT DATE_SUB();

Resultat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

  1. Hur installerar jag Oracle Instant Client på en Mac?

  2. Databasfailover för WordPress-webbplatser

  3. Hur man använder RANK() i SQL Server

  4. Kör flera frågor i ett enda Oracle-kommando i C#