Introduction
These functions help you add or subtract a specific amount of time to a date. This is useful when you want to find dates before or after a given date.
DATE_ADD(date, INTERVAL value unit) DATE_SUB(date, INTERVAL value unit)
SELECT DATE_ADD('2024-06-01', INTERVAL 10 DAY);
SELECT DATE_SUB('2024-06-01', INTERVAL 2 MONTH);
SELECT DATE_ADD(CURDATE(), INTERVAL 1 YEAR);
SELECT DATE_SUB('2024-06-15', INTERVAL 7 DAY);
SELECT DATE_ADD('2024-06-10', INTERVAL 5 DAY) AS plus_five_days, DATE_SUB('2024-06-10', INTERVAL 3 MONTH) AS minus_three_months;
DATE_ADD(date, INTERVAL expr unit) do?DATE_ADD is designed to add a time interval to a given date value.DATE_SUB, not DATE_ADD. The options for returning the current date and time and formatting a date into a string describe unrelated functions.DATE_SUB with INTERVAL keyword and unit DAY.DATE_SUB('date', INTERVAL 10 DAY). DATE_ADD('2024-06-15', INTERVAL -10 DAY) uses DATE_ADD with negative interval, which is not recommended. DATE_SUB('2024-06-15', 10 DAY) misses INTERVAL keyword. DATE_ADD('2024-06-15', 10 DAYS) misses the INTERVAL keyword and uses DATE_ADD which adds instead of subtracts.SELECT DATE_ADD('2024-06-10', INTERVAL 3 MONTH) AS new_date;SELECT DATE_SUB('2024-06-20', 5 DAY);DATE_SUB(date, INTERVAL expr unit).DATE_SUB('2024-06-20', 5 DAY) missing INTERVAL, causing syntax error.LAST_DAY(CURDATE()) gives the last day of this month.DATE_SUB(..., INTERVAL 2 WEEK). SELECT DATE_SUB(LAST_DAY(CURDATE()), INTERVAL 2 WEEK) AS result; uses this correctly. SELECT DATE_ADD(LAST_DAY(CURDATE()), INTERVAL -2 WEEK) AS result; uses DATE_ADD instead of DATE_SUB. SELECT DATE_SUB(CURDATE(), INTERVAL 2 WEEK) AS result; subtracts from current date, not last day. SELECT DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 2 WEEK) AS result; adds 2 weeks, which is incorrect.Pass the test and this pattern moves unknown