8 Ways to Add Days to a Date in MariaDB

MariaDB provides several ways to add a certain number of days to a given date. For example, you might want to add 10 days to a date, or 30 days, or even just 1 day. Fortunately, MariaDB makes this easy.

Here are 8 ways to add a number of days to a given date in MariaDB.

The ADDDATE() Function

Let’s start with the ADDDATE() function.

This function has two different syntaxes. The first syntax provides a concise way of adding a certain number of days to a date.

Example:

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

Result:

+---------------------------+
| ADDDATE('2021-05-01', 10) |
+---------------------------+
| 2021-05-11                |
+---------------------------+

Using this syntax, we provide two arguments. The first argument is the date, and the second is the number of days to add to that date.

The ADDDATE() Function – Syntax 2

The ADDDATE() function also has a more verbose syntax. This syntax allows us to be more explicit in how we add the days to the date.

Example:

SELECT ADDDATE('2021-05-01', INTERVAL 10 DAY);

Result:

+----------------------------------------+
| ADDDATE('2021-05-01', INTERVAL 10 DAY) |
+----------------------------------------+
| 2021-05-11                             |
+----------------------------------------+

In this case, we use the INTERVAL keyword, followed by the number of days, followed by the DAY keyword.

The INTERVAL keyword is used to add or subtract a time interval of time to a DATETIME, DATE or TIME value. We can use it on dates, along with the applicable date/time unit to add a certain number of days to our date. In our case, the date/time unit is DAY, but it could just as easily be MONTH, YEAR, HOUR, etc, as well as a number of composite units.

The DATE_ADD() Function

The DATE_ADD() function works the same as ADDDATE() when using the verbose syntax. In fact, when using the verbose syntax, ADDDATE() is a synonym for DATE_ADD().

Example:

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

Result:

+-----------------------------------------+
| DATE_ADD('2021-05-01', INTERVAL 10 DAY) |
+-----------------------------------------+
| 2021-05-11                              |
+-----------------------------------------+

The SUBDATE() Function – Syntax 1

The SUBDATE() function allows you to subtract an amount to a date. However, if you provide a negative value to subtract, then it ends up being added to the date.

Example:

SELECT SUBDATE('2021-05-01', -10);

Result:

+----------------------------+
| SUBDATE('2021-05-01', -10) |
+----------------------------+
| 2021-05-11                 |
+----------------------------+

The SUBDATE() Function – Syntax 2

The SUBDATE() function also has the more verbose syntax (similar to the ADDDATE() function).

Example:

SELECT SUBDATE('2021-05-01', INTERVAL -10 DAY);

Result:

+-----------------------------------------+
| SUBDATE('2021-05-01', INTERVAL -10 DAY) |
+-----------------------------------------+
| 2021-05-11                              |
+-----------------------------------------+

The DATE_SUB() Function

Here’s an example that uses the DATE_SUB() function:

SELECT DATE_SUB('2021-05-01', INTERVAL -10 DAY);

Result:

+------------------------------------------+
| DATE_SUB('2021-05-01', INTERVAL -10 DAY) |
+------------------------------------------+
| 2021-05-11                               |
+------------------------------------------+

The + Operator

Another option is to use the + operator.

The + operator is used to perform addition, and we can use it on dates, along with the applicable date/time unit to add a certain number of days to our date.

Example:

SELECT '2021-05-01' + INTERVAL 10 DAY;

Result:

+--------------------------------+
| '2021-05-01' + INTERVAL 10 DAY |
+--------------------------------+
| 2021-05-11                     |
+--------------------------------+

The - Operator

The - operator can be used to subtract an amount from a date. However, if you subtract a negative number, then a positive amount is added to the date:

SELECT '2021-05-01' - INTERVAL -10 DAY;

Result:

+---------------------------------+
| '2021-05-01' - INTERVAL -10 DAY |
+---------------------------------+
| 2021-05-11                      |
+---------------------------------+

BONUS: The ADDTIME() Function

I said this article contains 8 ways to add days to a date, but here’s a couple of bonus functions! Maybe I should have called this article “10 ways to add days to a datetime value” instead.

Anyway, you can use the ADDTIME() function to add a number of days to a datetime expression.

Example:

SELECT ADDTIME('2021-05-01 10:30:45', '1 0:0:0');

Result:

+-------------------------------------------+
| ADDTIME('2021-05-01 10:30:45', '1 0:0:0') |
+-------------------------------------------+
| 2021-05-02 10:30:45                       |
+-------------------------------------------+

You can also change the other time units, such as hours, minutes, seconds, etc.

You can alternatively switch it around and use SUBTIME() with a negative value if you so wish:

SELECT SUBTIME('2021-05-01 10:30:45', '-1 0:0:0');

Result:

+--------------------------------------------+
| SUBTIME('2021-05-01 10:30:45', '-1 0:0:0') |
+--------------------------------------------+
| 2021-05-02 10:30:45                        |
+--------------------------------------------+

Other Date and Time Units

The above examples add a number of days to the date, but we can use the same techniques to add any date/time unit. We use DAY as the date/time unit, but as mentioned, it could just as easily be MONTH, YEAR, HOUR, etc, as well as any of the composite units.

See MariaDB Date and Time Units for a full list of date/time units that can be used with the above functions and operator.