MySQL | DATEDIFF method
Start your free 7-days trial now!
MySQL's DATEDIFF(~)
method returns the days difference between two date or datetime values. (i.e. expr1
- expr2
)
Only the date portion of datetimes are used in the calculation.
Parameters
1. expr1
| date/datetime
A date/datetime to be subtracted from.
2. expr2
| date/datetime
A date/datetime to subtract.
Return value
The days difference between the input date/datetime values (expr1
- expr2
).
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 return number of days between today and date of enrollment of students:
SELECT fname, NOW(), DATEDIFF(NOW(), day_enrolled)FROM students;
+----------+---------------------+-------------------------------+| fname | NOW() | DATEDIFF(NOW(), day_enrolled) |+----------+---------------------+-------------------------------+| Sky | 2020-05-20 13:57:53 | 1630 || Ben | 2020-05-20 13:57:53 | 1491 || Travis | 2020-05-20 13:57:53 | 645 || Arthur | 2020-05-20 13:57:53 | 1510 || Benjamin | 2020-05-20 13:57:53 | 2331 |+----------+---------------------+-------------------------------+
To return students who have been enrolled for more than 1500
days as of 16 April 2020:
SELECT fname, DATEDIFF('2020-04-16', day_enrolled)FROM studentsWHERE DATEDIFF('2020-04-16', day_enrolled) > 1500;
+----------+--------------------------------------+| fname | DATEDIFF('2020-04-16', day_enrolled) |+----------+--------------------------------------+| Sky | 1596 || Benjamin | 2297 |+----------+--------------------------------------+