One of the most frequent tasks in programming is to calculate date intervals that are expressed in different units of measurement, like days, months, or years. In many cases, these calculations are used to derive durations, create timebased reports, or perform timebased scheduling. MySQL, one of the most popular relational database management systems, provides several date functions that can help you perform date arithmetic easily.
In this article, we will discuss how to subtract dates in MySQL using a variety of examples.
Subtracting Dates Using the DATE_SUB Function
The DATE_SUB function subtracts a specified time period from a given date. The syntax of this function is as follows:
DATE_SUB(date, INTERVAL expr unit)
Where the date is a valid date or datetime expression, expr is the amount of the interval you want to subtract, and unit is the unit of the interval (e.g., DAY, MONTH, HOUR, MINUTE, SECOND).
Here is an example that uses the DATE_SUB function to subtract 2 days from a given date:
SELECT DATE_SUB('20211201', INTERVAL 2 DAY);
This will return the result '20211129', which is the date two days before December 1, 2021.
You can also subtract other units of time using the DATE_SUB function. For example, if you want to subtract 3 months and 2 days from a given date, you can write:
SELECT DATE_SUB('20211201', INTERVAL '3 2' MONTH_DAY);
This will return the result '20210830', which is three months and two days before December 1, 2021.
Subtracting Dates Using the DATEDIFF Function
The DATEDIFF function calculates the difference in days between two dates. The syntax of this function is as follows:
DATEDIFF(date1, date2)
Where date1 and date2 are valid dates or datetime expressions.
Here is an example that uses the DATEDIFF function to calculate the number of days between two dates:
SELECT DATEDIFF('20211201', '20211129');
This will return the result 2, which is the number of days between November 29, 2021, and December 1, 2021.
You can also subtract dates and obtain the difference in other units of time using the TIMESTAMPDIFF function. For example, if you want to calculate the number of months between two dates, you can write:
SELECT TIMESTAMPDIFF(MONTH, '20211201', '20210830');
This will return the result 3, which is the number of months between December 1, 2021, and August 30, 2021.
Subtracting Dates Using the SUBDATE Function
The SUBDATE function is similar to the DATE_SUB function, but it allows you to subtract a time period from a given date and return a new date value. The syntax of this function is as follows:
SUBDATE(date, interval)
Where date is a valid date or datetime expression and interval is the amount of the interval you want to subtract, followed by the unit of the interval (e.g., '2 DAY', '3 MONTH', '1 YEAR').
Here is an example that uses the SUBDATE function to subtract 1 year, 2 months, and 3 days from a given date:
SELECT SUBDATE('20211201', '1 YEAR 2 MONTH 3 DAY');
This will return the result '20200928', which is the date that is one year, two months, and three days before December 1, 2021.
Conclusion
Subtracting dates is a common task in programming, and MySQL provides several functions that can make it easier to perform date arithmetic. In this article, we have discussed how to subtract dates using the DATE_SUB, DATEDIFF, and SUBDATE functions, which can be useful for a variety of applications. Whether you need to calculate date intervals, create timebased reports, or perform timebased scheduling, these functions can help you perform date arithmetic with ease.
Sure! Let's dive a bit deeper into some of the topics covered in the previous article.
DATE_SUB Function
The DATE_SUB function is very versatile and can be used to subtract any unit of time from a given date or datetime expression. In addition to the examples shown in the previous article, you can also subtract hours, minutes, and seconds from a given datetime. For example, to subtract 5 hours from a datetime, you can write:
SELECT DATE_SUB('20211201 10:00:00', INTERVAL 5 HOUR);
This will return the result '20211201 05:00:00', which is the datetime 5 hours before '20211201 10:00:00'.
You can also use the DATE_SUB function to subtract fractions of seconds. For example, to subtract 500 milliseconds from a datetime, you can write:
SELECT DATE_SUB('20211201 10:00:00.500', INTERVAL 500 MICROSECOND);
This will return the result '20211201 10:00:00.000000', which is the datetime 500 milliseconds before '20211201 10:00:00.500'.
DATEDIFF Function
The DATEDIFF function is a useful function to calculate the difference in days between two dates, but it can also be used to calculate the difference in other units of time. For example, to calculate the difference in months between two dates, you can write:
SELECT TIMESTAMPDIFF(MONTH, '20211201', '20210830');
This will return the result 3, which is the difference in months between December 1, 2021, and August 30, 2021.
The TIMESTAMPDIFF function can also be used to calculate the difference in years, quarters, weeks, days, hours, minutes, and seconds between two dates or datetimes.
SUBDATE Function
The SUBDATE function is similar to the DATE_SUB function but returns a new date value instead of the original value with the interval subtracted. Additionally, the SUBDATE function can also be used to add time to a date or datetime. For example, to add 5 months and 10 days to a given date, you can write:
SELECT SUBDATE('20211201', INTERVAL '5 MONTH 10 DAY');
This will return the result '20220521', which is the date that is five months and ten days after December 1, 2021.
Conclusion
Performing date arithmetic in MySQL can be made easier with the use of functions like DATE_SUB, DATEDIFF, and SUBDATE. These functions allow you to perform a variety of date calculations and obtain the desired results quickly and efficiently. Whether you need to calculate date intervals, perform timebased calculations, or create timebased reports, these functions can help you achieve your goals.
Popular questions

What is the syntax of the DATE_SUB function in MySQL, and how can it be used to subtract time from a given date?
Answer: The syntax of the DATE_SUB function in MySQL is as follows: DATE_SUB(date, INTERVAL expr unit). Here, date is a valid date or datetime expression, expr is the amount of the interval you want to subtract, and unit is the unit of the interval (e.g., DAY, MONTH, HOUR, MINUTE, SECOND). DATE_SUB function can be used to subtract any unit of time from a given date or datetime expression. 
How can you subtract dates in MySQL using the DATEDIFF function?
Answer: The DATEDIFF function in MySQL calculates the difference in days between two dates. To subtract dates using the DATEDIFF function, you can write the following query: SELECT DATEDIFF(date1, date2). Here, date1 and date2 are valid dates or datetime expressions. The result of this query will be the number of days between date1 and date2. 
Can the SUBDATE function in MySQL be used to add time to a date or datetime expression?
Answer: Yes, the SUBDATE function in MySQL can be used to add time to a date or datetime expression. The SUBDATE function subtracts a specified time period from a given date or datetime expression. The syntax of this function is as follows: SUBDATE(date, interval). 
What is the TIMESTAMPDIFF function in MySQL, and how can it be used to perform date arithmetic?
Answer: The TIMESTAMPDIFF function in MySQL calculates the difference between two dates or datetimes in a given unit of time. The syntax for TIMESTAMPDIFF is as follows: TIMESTAMPDIFF(unit, datetime1, datetime2). Here, unit is the unit of time in which you want to calculate the difference, and datetime1 and datetime2 are the dates or datetimes for which you want to calculate the difference. You can use TIMESTAMPDIFF to calculate the difference in years, quarters, months, weeks, days, hours, minutes, and seconds. 
What is the difference between the DATE_SUB and SUBDATE functions in MySQL?
Answer: The DATE_SUB and SUBDATE functions in MySQL both subtract a specified time period from a given date or datetime expression. However, the DATE_SUB function returns the original value with the interval subtracted, whereas the SUBDATE function returns a new date value with the interval subtracted. The syntax for DATE_SUB is as follows: DATE_SUB(date, INTERVAL expr unit), and the syntax for SUBDATE is SUBDATE(date, interval).
Tag
DateSubtraction.