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

Sådan fungerer ADDDATE() i MariaDB

I MariaDB, ADDDATE() 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.

ADDDATE() har også en genvejssyntaks, der giver dig mulighed for at tilføje et givet antal dage til datoen.

Syntaks

ADDDATE() funktion har to syntakser.

Syntaks 1:

ADDDATE(expr,days) 

Hvor expr er datoen og days er antallet af dage, der skal tilføjes.

Syntaks 2:

ADDDATE(date,INTERVAL expr unit) 

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

Når du bruger denne syntaks, ADDDATE() er et synonym for DATE_ADD() .

Eksempel – Syntaks 1

Her er et eksempel på brug af den første syntaks:

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

Resultat:

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

Vi kan også inkludere tidsdelen, hvis det kræves:

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

Resultat:

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

Her er to alternative måder at gøre det samme på:

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"; 

Resultat:

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

Eksempel – Syntaks 2

Her er et eksempel på brug af den anden syntaks:

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

Resultat:

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

Denne syntaks giver os mulighed for at tilføje andre enheder til datoen (dvs. ikke kun dagene). Her tilføjede jeg en time til datoen, men jeg kunne lige så godt have tilføjet minutter, sekunder, måneder, dage, år osv. Fortsæt med at læse for eksempler.

Her er to alternative metoder til at opnå det samme resultat som ovenstående eksempel:

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"; 

Resultat:

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

Negative intervaller

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

Eksempel:

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

Resultat:

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

Andre enheder

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

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; 

Resultat (ved hjælp af lodret output):

 ÅR:2022-05-01 10:00:00 MÅNED:2021-06-01 10:00:00 DAG:2021-05-02 10:00:00 TIME:2021-05-01 11:00:00 MINUTE:2021-05-01 10:01:00 SECOND:2021-05-01 10:00:01MICROSECOND:2021-05-01 10:00:00.000001

Sammensatte enheder

Her er et eksempel, der bruger sammensatte enheder:

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"; 

Resultat:

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

Nulledatoer

Sender null for datoen returnerer null :

SELECT ADDDATE(null, INTERVAL 1 YEAR); 

Resultat:

+--------------------------------+| ADDDATE(null, INTERVAL 1 ÅR) |+--------------------------------+| NULL |+--------------------------------+

Manglende argument

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

SELECT ADDDATE(); 

Resultat:

FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MariaDB-serverversion for den rigtige syntaks til brug i nærheden af ​​')' på linje 1

  1. 4 måder at få databasesamlingen i MariaDB

  2. Spring Data JPA + Hibernate Spring over låste rækker (PostgreSQL)

  3. TINYTEXT, TEXT, MEDIUMTEXT og LONGTEXT maksimale lagerstørrelser

  4. Sådan opretter du en ny bruger og giver tilladelser i MySQL