sql >> Databasteknik >  >> RDS >> MariaDB

Hur ADDDATE() fungerar i MariaDB

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.000001

Kompositenheter

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 returnerar null :

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

  1. Kan MySQL ersätta flera tecken?

  2. När autovacuum inte dammsuger

  3. Aggregerande (x,y) koordinatpunktmoln i PostgreSQL

  4. Hur man hittar och ersätter text i mysql-tabellen