MySQL DATEDIFF Function

Created with Sketch.

MySQL DATEDIFF Function

Summary: in this tutorial, you will learn how to use the MySQL DATEDIFF function to calculate the number of days between two date values.

Introduction to MySQL DATEDIFF function

The MySQL DATEDIFF function calculates the number of days between two  DATE,  DATETIME, or  TIMESTAMP values.

The syntax of the MySQL DATEDIFF function is as follows:

DATEDIFF(date_expression_1,date_expression_2);

Code language: SQL (Structured Query Language) (sql)

The DATEDIFF function accepts two arguments that can be any valid date or date-time values. If you pass DATETIME or TIMESTAMP values, the DATEDIFF function only takes the date parts for calculation and ignores the time parts.

The DATEDIFF function is useful in many cases e.g., you can calculate an interval in days that the products need to ship to a customer.

MySQL DATEDIFF examples

Let’s take a look at some examples of using the DATEDIFF function.

SELECT DATEDIFF('2011-08-17','2011-08-17'); -- 0 day

Code language: SQL (Structured Query Language) (sql)

 

SELECT DATEDIFF('2011-08-17','2011-08-08'); -- 9 days

Code language: SQL (Structured Query Language) (sql)

 

SELECT DATEDIFF('2011-08-08','2011-08-17'); -- -9 days

Code language: SQL (Structured Query Language) (sql)

 

See the following orders table in the sample database.

To calculate the number of days between the required date and shipped date of the orders, you use the DATEDIFF function as follows:

SELECT
orderNumber,
DATEDIFF(requiredDate, shippedDate) daysLeft
FROM
orders
ORDER BY daysLeft DESC;

Code language: SQL (Structured Query Language) (sql)

 

The following statement gets all orders whose statuses are in-process and calculates the number of days between ordered date and required date:

SELECT
orderNumber,
DATEDIFF(requiredDate, orderDate) remaining_days
FROM
orders
WHERE
status = 'In Process'
ORDER BY remaining_days;

Code language: SQL (Structured Query Language) (sql)

 

For calculating an interval in week or month, you can divide the returned value of the DATEDIFF function by 7 or 30 as the following query:

SELECT
orderNumber,
ROUND(DATEDIFF(requiredDate, orderDate) / 7, 2),
ROUND(DATEDIFF(requiredDate, orderDate) / 30,2)
FROM
orders
WHERE
status = 'In Process';

Code language: SQL (Structured Query Language) (sql)

 

Note that the ROUND function is used to round the results.

In this tutorial, you have learned how to use MySQL DATEDIFF function to calculate the number of days between two date values.

Leave a Reply

Your email address will not be published. Required fields are marked *