MySQL | DATE_ADD method
Start your free 7-days trial now!
MySQL's DATE_ADD(~)
method adds the specified time interval to a date or datetime value.
Syntax
SELECT DATE_ADD(date, INTERVAL expr unit);
Parameters
1. date
| date/datetime
The date / datetime to add the time interval to.
2. expr unit
| integer with units
The interval to add to the provided date
together with its units.
Refer to 'List of units' at the bottom of page for a valid list of units.
Return value
The result of adding the specified interval to date
.
Examples
Consider the following table about some students:
student_id | fname | lname | day_enrolled | age | username |
---|---|---|---|---|---|
1 | Sky | Towner | 2015-12-03 | 17 | stowner1 |
2 | Ben | Davis | 2016-04-20 | 19 | bdavis2 |
3 | Travis | Apple | 2018-08-14 | 18 | tapple3 |
4 | Arthur | David | 2016-04-01 | 16 | adavid4 |
5 | Benjamin | Town | 2014-01-01 | 17 | btown5 |
The above sample table can be created using the code here.
Basic usage
To add 2
days to student enrollment dates:
SELECT fname, day_enrolled, DATE_ADD(day_enrolled, INTERVAL 2 DAY)FROM students;
+----------+--------------+----------------------------------------+| fname | day_enrolled | DATE_ADD(day_enrolled, INTERVAL 2 DAY) |+----------+--------------+----------------------------------------+| Sky | 2015-12-03 | 2015-12-05 || Ben | 2016-04-20 | 2016-04-22 || Travis | 2018-08-14 | 2018-08-16 || Arthur | 2016-04-01 | 2016-04-03 || Benjamin | 2014-01-01 | 2014-01-03 |+----------+--------------+----------------------------------------+
To add 2
months to student enrollment dates:
SELECT fname, day_enrolled, DATE_ADD(day_enrolled, INTERVAL 2 MONTH)FROM students;
+----------+--------------+------------------------------------------+| fname | day_enrolled | DATE_ADD(day_enrolled, INTERVAL 2 MONTH) |+----------+--------------+------------------------------------------+| Sky | 2015-12-03 | 2016-02-03 || Ben | 2016-04-20 | 2016-06-20 || Travis | 2018-08-14 | 2018-10-14 || Arthur | 2016-04-01 | 2016-06-01 || Benjamin | 2014-01-01 | 2014-03-01 |+----------+--------------+------------------------------------------+
Negative intervals
To subtract 1
day from a date:
SELECT DATE_ADD('2020-01-01', INTERVAL -1 DAY);
+-----------------------------------------+| DATE_ADD('2020-01-01', INTERVAL -1 DAY) |+-----------------------------------------+| 2019-12-31 |+-----------------------------------------+
Note that there is a separate method DATE_SUB(~) specifically for subtracting intervals from a date / datetime.
List of units
The below table represents a list of units that are supported:
Unit | Expected Input Format |
---|---|
MICROSECOND |
|
SECOND |
|
MINUTE |
|
HOUR |
|
DAY |
|
WEEK |
|
MONTH |
|
QUARTER |
|
YEAR |
|
SECOND_MICROSECOND |
|
MINUTE_MICROSECOND |
|
MINUTE_SECOND |
|
HOUR_MICROSECOND |
|
HOUR_SECOND |
|
HOUR_MINUTE |
|
DAY_MICROSECOND |
|
DAY_SECOND |
|
DAY_MINUTE |
|
DAY_HOUR |
|
YEAR_MONTH |
|