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.000001Sammensatte 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 returnerernull
: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