I MariaDB, ADDDATE()
är en inbyggd datum- och tidsfunktion som utför datumaritmetik.
Det låter dig ändra ett datum genom att ange datumet, enheten som ska läggas till och beloppet som ska läggas till. Du kan skicka ett negativt belopp om du behöver dra av datumet med ett visst intervall.
ADDDATE()
har också en genvägssyntax som låter dig lägga till ett givet antal dagar till datumet.
Syntax
ADDDATE()
funktionen har två syntaxer.
Syntax 1:
ADDDATE(expr,days)
Där expr
är datumet och days
är antalet dagar att lägga till.
Syntax 2:
ADDDATE(date,INTERVAL expr unit)
Där date
är datumet att ändra, expr
är beloppet som ska läggas till och unit
är enheten som ska läggas till (t.ex. sekund, minut, etc).
När du använder denna syntax, ADDDATE()
är en synonym för DATE_ADD()
.
Exempel – Syntax 1
Här är ett exempel på hur den första syntaxen används:
SELECT ADDDATE('2021-05-01', 1);
Resultat:
+--------------------------------+| ADDDATE('2021-05-01', 1) |+--------------------------------+| 2021-05-02 |+--------------------------------+
Vi kan även inkludera tidsdelen om det behövs:
SELECT ADDDATE('2021-05-01 10:00:00', 1);
Resultat:
+----------------------------------------+| ADDDATE('2021-05-01 10:00:00', 1) |+------------------------------------- ----+| 2021-05-02 10:00:00 |+------------------------------------------------+Här är två alternativa sätt att göra samma sak:
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 |+---------------------------+---------------- -----+Exempel – Syntax 2
Här är ett exempel på hur du använder den andra syntaxen:
SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR);
Resultat:
+------------------------------------------------------ ---+| ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR) |+------------------------------------ --------------------+| 2021-05-31 11:00:00 |+------------------------------------------------ -----------+Denna syntax tillåter oss att lägga till andra enheter till datumet (dvs inte bara dagarna). Här lade jag till en timme till datumet, men jag kunde lika gärna ha lagt till minuter, sekunder, månader, dagar, år etc. Fortsätt läsa för exempel.
Här är två alternativa metoder för att uppnå samma resultat som exemplet ovan:
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 |+---------------------+----------------------------+| 2021-05-31 11:00:00 | 2021-05-31 11:00:00 |+--------------------------+---------------- -----+Negativa intervall
Genom att ange ett negativt intervall subtraherar det beloppet från datumet.
Exempel:
SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR);
Resultat:
+------------------------------------------------------ ----+| ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR) |+----------------------------------- ----------------------------+| 2021-05-31 09:00:00 |+---------------------------------------------------- ------------+Övriga enheter
Här är ett exempel som lägger till ett intervall på 1 till de olika datum- och tidsenheterna:
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 (med vertikal utdata):
ÅR:2022-05-01 10:00:00 MÅNAD:2021-06-01 10:00:00 DAG:2021-05-02 10:00:00 TIMME:2021-05-01 11:00:00 MINUTT:2021-05-01 10:01:00 SEKUND:2021-05-01 10:00:01MICROSECOND:2021-05-01 10:00:00.000001Kompositenheter
Här är ett exempel som använder sammansatta enheter:
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 |+---------------------+---------------------------+--- ------------------+| 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 |+--------------------------+---------------- -----+----------------------------+Nulldatum
Skickar
null
för datumet returnerarnull
:SELECT ADDDATE(null, INTERVAL 1 YEAR);
Resultat:
+--------------------------------+| ADDDATE(null, INTERVAL 1 ÅR) |+--------------------------------+| NULL |+--------------------------------+Argument saknas
Anropar
ADDDATE()
med fel antal argument, eller utan att skicka några argument resulterar i ett fel:SELECT ADDDATE();
Resultat:
ERROR 1064 (42000):Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MariaDB-serverversion för rätt syntax att använda nära ')' på rad 1