sql >> Databasteknik >  >> RDS >> MariaDB

6 sätt att lägga till en månad till ett datum i MariaDB

MariaDB tillhandahåller flera sätt att utföra aritmetik på datum. Detta inkluderar att lägga till eller subtrahera en månad (eller många månader) från ett givet datum.

Här är 6 sätt att lägga till en månad till ett datum i MariaDB.

Bonusuppdatering :Jag har nu lagt till ett sjunde sätt att lägga till en månad till ett datum i slutet av den här artikeln. Så jag antar att det nu är 7 sätt att lägga till en månad till ett datum i MariaDB 🙂

DATE_ADD() Funktion

DATE_ADD() funktionen låter dig lägga till ett belopp till ett datum. Du kan till exempel lägga till ett antal dagar, veckor, månader, år etc.

Exempel:

SELECT DATE_ADD('2021-05-01', INTERVAL 1 MONTH);

Resultat:

+------------------------------------------+
| DATE_ADD('2021-05-01', INTERVAL 1 MONTH) |
+------------------------------------------+
| 2021-06-01                               |
+------------------------------------------+

Om du behöver lägga till mer än en månad, använd bara det numret istället för 1 . Men MONTH sökord förblir icke-plural oavsett:

SELECT DATE_ADD('2021-05-01', INTERVAL 2 MONTH);

Resultat:

+------------------------------------------+
| DATE_ADD('2021-05-01', INTERVAL 2 MONTH) |
+------------------------------------------+
| 2021-07-01                               |
+------------------------------------------+

Det är också möjligt att använda en annan datum-/tidsenhet med lämpligt nummer för den enheten. Därför kan du ange ett visst antal dagar, till exempel 30 eller 31.

Exempel:

SELECT DATE_ADD('2021-05-01', INTERVAL 31 DAY);

Resultat:

+-----------------------------------------+
| DATE_ADD('2021-05-01', INTERVAL 31 DAY) |
+-----------------------------------------+
| 2021-06-01                              |
+-----------------------------------------+

När du använder dagar, om det blir exakt en månad eller inte beror på månaden i fråga. I exemplet ovan kunde jag ha angett 30 dagar, men det skulle ha hållit oss inom samma månad:

SELECT DATE_ADD('2021-05-01', INTERVAL 30 DAY);

Resultat:

+-----------------------------------------+
| DATE_ADD('2021-05-01', INTERVAL 30 DAY) |
+-----------------------------------------+
| 2021-05-31                              |
+-----------------------------------------+

Så om du faktiskt vill lägga till en månad, då MONTH enhet är mycket enklare än att försöka räkna ut hur många dagar som ska läggas till.

ADDDATE() Funktion

Ett annat sätt att lägga till en månad till ett datum är att använda ADDDATE() fungera. Denna funktion har två syntaxer. En syntax låter dig lägga till ett antal dagar till ett datum. Den andra syntaxen är densamma som med DATE_ADD() funktionen ovan. När du använder denna syntax, ADDDATE() är en synonym för DATE_ADD() .

Exempel:

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

Resultat:

+-----------------------------------------+
| ADDDATE('2021-05-01', INTERVAL 1 MONTH) |
+-----------------------------------------+
| 2021-06-01                              |
+-----------------------------------------+

DATE_SUB() Funktion

DATE_SUB() funktionen låter dig subtrahera ett belopp till ett datum. Men om du anger ett negativt värde att subtrahera, slutar det med att det läggs till till datumet.

Exempel:

SELECT DATE_SUB('2021-05-01', INTERVAL -1 MONTH);

Resultat:

+-------------------------------------------+
| DATE_SUB('2021-05-01', INTERVAL -1 MONTH) |
+-------------------------------------------+
| 2021-06-01                                |
+-------------------------------------------+

SUBDATE() Funktion

SUBDATE() funktion är en synonym för DATE_SUB() när du använder följande syntax.

Exempel:

SELECT SUBDATE('2021-05-01', INTERVAL -1 MONTH);

Resultat:

+------------------------------------------+
| SUBDATE('2021-05-01', INTERVAL -1 MONTH) |
+------------------------------------------+
| 2021-06-01                               |
+------------------------------------------+

+ Operatör

Ett annat alternativ är att använda + operatör.

+ operatören används för att utföra tillägg, och vi kan använda den på datum, tillsammans med tillämplig datum/tidsenhet för att lägga till ett visst antal månader till vårt datum.

Exempel:

SELECT '2021-05-01' + INTERVAL 1 MONTH;

Resultat:

+---------------------------------+
| '2021-05-01' + INTERVAL 1 MONTH |
+---------------------------------+
| 2021-06-01                      |
+---------------------------------+

- Operatör

- operator kan användas för att subtrahera ett belopp från ett datum. Men om det används för att subtrahera ett negativt tal, blir resultatet ett positivt belopp som läggs till datumet:

SELECT '2021-05-01' - INTERVAL -1 MONTH;

Resultat:

+----------------------------------+
| '2021-05-01' - INTERVAL -1 MONTH |
+----------------------------------+
| 2021-06-01                       |
+----------------------------------+

Bonus:ADD_MONTHS() Funktion

Sedan jag först skrev den här artikeln har en ny funktion introducerats i MariaDB specifikt för att lägga till månader till ett datum.

Funktionen heter ADD_MONTHS() , och det introducerades i MariaDB 10.6.1 för att förbättra Oracle-kompatibiliteten.

Så jag antar att den här artikeln borde heta 7 sätt att lägga till en månad till ett datum... 🙂

Exempel:

SELECT ADD_MONTHS('2020-01-01', 3);

Resultat:

+-----------------------------+
| ADD_MONTHS('2020-01-01', 3) |
+-----------------------------+
| 2020-04-01                  |
+-----------------------------+

Andra datum- och tidsenheter

Exemplen ovan lägger till ett antal månader till datumet, men vi kan använda samma teknik för att lägga till valfri datum-/tidsenhet. Se MariaDB datum- och tidsenheter för en fullständig lista över datum-/tidsenheter som kan användas med ovanstående funktioner och operator.


  1. Hur man kommer åt den inbyggda CRM-mallen i Microsoft Access

  2. Hur man ökar den tillåtna storleken för bilagor när du skickar e-post i SQL Server (T-SQL)

  3. Hur får man snyggt formaterade resultat från en Oracle-procedur som returnerar en referensmarkör?

  4. Förlorade anslutningen till MySQL-servern vid "läsning av initialt kommunikationspaket", systemfel:0