sql >> Database >  >> RDS >> MariaDB

Hoe ADDDATE() werkt in MariaDB

In MariaDB, ADDDATE() is een ingebouwde datum- en tijdfunctie die datumberekeningen uitvoert.

Hiermee kunt u een datum wijzigen door de datum, de toe te voegen eenheid en het toe te voegen bedrag op te geven. U kunt een negatief bedrag doorgeven als u de datum met een bepaald interval moet aftrekken.

ADDDATE() heeft ook een syntaxis voor sneltoetsen waarmee u een bepaald aantal dagen aan de datum kunt toevoegen.

Syntaxis

De ADDDATE() functie heeft twee syntaxis.

Syntaxis 1:

ADDDATE(expr,days)

Waar expr is de datum, en days is het aantal dagen dat moet worden toegevoegd.

Syntaxis 2:

ADDDATE(date,INTERVAL expr unit)

Waar date is de datum om te veranderen, expr is het toe te voegen bedrag, en unit is de eenheid die moet worden toegevoegd (bijv. seconde, minuut, enz.).

Bij gebruik van deze syntaxis, ADDDATE() is een synoniem voor DATE_ADD() .

Voorbeeld – Syntaxis 1

Hier is een voorbeeld van het gebruik van de eerste syntaxis:

SELECT ADDDATE('2021-05-01', 1);

Resultaat:

+--------------------------+
| ADDDATE('2021-05-01', 1) |
+--------------------------+
| 2021-05-02               |
+--------------------------+

We kunnen indien nodig ook het tijdsgedeelte opnemen:

SELECT ADDDATE('2021-05-01 10:00:00', 1);

Resultaat:

+-----------------------------------+
| ADDDATE('2021-05-01 10:00:00', 1) |
+-----------------------------------+
| 2021-05-02 10:00:00               |
+-----------------------------------+

Hier zijn twee alternatieve manieren om hetzelfde te doen:

SELECT 
    DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1",
    '2021-05-01 10:00:00' + INTERVAL 1 DAY AS "Result 2";

Resultaat:

+---------------------+---------------------+
| Result 1            | Result 2            |
+---------------------+---------------------+
| 2021-05-02 10:00:00 | 2021-05-02 10:00:00 |
+---------------------+---------------------+

Voorbeeld – Syntaxis 2

Hier is een voorbeeld van het gebruik van de tweede syntaxis:

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

Resultaat:

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

Deze syntaxis stelt ons in staat om andere eenheden toe te voegen aan de datum (dus niet alleen de dagen). Hier heb ik een uur aan de datum toegevoegd, maar ik had net zo goed minuten, seconden, maanden, dagen, jaren, enz. kunnen toevoegen. Lees verder voor voorbeelden.

Hier zijn twee alternatieve methoden om hetzelfde resultaat te bereiken als in het bovenstaande voorbeeld:

SELECT 
    DATE_ADD('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1",
    '2021-05-31 10:00:00' + INTERVAL 1 HOUR AS "Result 2";

Resultaat:

+---------------------+---------------------+
| Result 1            | Result 2            |
+---------------------+---------------------+
| 2021-05-31 11:00:00 | 2021-05-31 11:00:00 |
+---------------------+---------------------+

Negatieve intervallen

Als u een negatief interval opgeeft, wordt dat bedrag van de datum afgetrokken.

Voorbeeld:

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

Resultaat:

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

Andere eenheden

Hier is een voorbeeld dat een interval van 1 toevoegt aan de verschillende datum- en tijdseenheden:

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

Resultaat (met verticale uitvoer):

       YEAR: 2022-05-01 10:00:00
      MONTH: 2021-06-01 10:00:00
        DAY: 2021-05-02 10:00:00
       HOUR: 2021-05-01 11:00:00
     MINUTE: 2021-05-01 10:01:00
     SECOND: 2021-05-01 10:00:01
MICROSECOND: 2021-05-01 10:00:00.000001

Samengestelde eenheden

Hier is een voorbeeld dat samengestelde eenheden gebruikt:

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

Resultaat:

+---------------------+---------------------+---------------------+
| YEAR_MONTH          | HOUR_SECOND         | DAY_MINUTE          |
+---------------------+---------------------+---------------------+
| 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 |
+---------------------+---------------------+---------------------+

Null-datums

Doorgeven van null voor de datum retourneert null :

SELECT ADDDATE(null, INTERVAL 1 YEAR);

Resultaat:

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

Ontbrekend argument

Bellen ADDDATE() met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten resulteert in een fout:

SELECT ADDDATE();

Resultaat:

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. Hoe verwijder ik alle niet-alfabetische tekens uit de tekenreeks in SQL Server?

  2. Wat is de reden / het nut om het ENABLE-sleutelwoord te gebruiken in Oracle-database-instructies?

  3. hoe vind je alle indexen en hun kolommen voor tabellen, views en synoniemen in oracle

  4. JShell gebruiken in Java 9 in NetBeans 9.0, deel 3