sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer DATE_ADD() i MariaDB

I MariaDB, DATE_ADD() er en indbygget dato- og tidsfunktion, der udfører datoregning.

Det giver dig mulighed for at ændre en dato ved at angive datoen, den enhed, der skal tilføjes, og det beløb, der skal tilføjes. Du kan sende et negativt beløb, hvis du skal trække datoen fra med et bestemt interval.

Syntaks

Syntaksen ser sådan ud:

DATE_ADD(date,INTERVAL expr unit)

Hvor date er datoen for ændring, expr er det beløb, der skal tilføjes, og unit er den dato/tidsenhed, der skal tilføjes (f.eks. sekund, minut osv.).

Eksempel

Her er et grundlæggende eksempel:

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

Resultat:

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

Det er ligesom at gøre følgende:

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

Resultat:

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

Negative intervaller

Angivelse af et negativt interval trækker dette beløb fra datoen.

Eksempel:

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

Resultat:

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

Andre enheder

Her er et eksempel, der tilføjer et interval på 1 til de forskellige dato- og tidsenheder:

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

Resultat (ved hjælp af lodret output):

       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

Sammensatte enheder

Her er et eksempel, der bruger sammensatte enheder:

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

Resultat:

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

Nulledatoer

Sender null for datoen returnerer null :

SELECT DATE_ADD(null, INTERVAL 1 YEAR);

Resultat:

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

Manglende argument

Kalder DATE_ADD() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:

SELECT DATE_ADD();

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. Indlæs CSV-data i MySQL i Python

  2. Sådan indsætter du data i tabellen ved hjælp af lagrede procedurer i postgresql

  3. MySQL Tutorial – Forstå sekunderne bag Master Value

  4. Vis altid decimaler i SQL?