हम एक फंक्शन बना सकते हैं, जो डेट मानों को अपने आर्गुमेंट के रूप में स्वीकार करता है और वर्ष, महीना और दिनों में अंतर लौटाता है:
mysql> CREATE FUNCTION date_difference(date1 DATE, date2 DATE) RETURNS VARCHAR(30)
-> RETURN CONCAT(
-> @years := TIMESTAMPDIFF(YEAR, date1, date2), IF (@years = 1, ' year, ', ' years, '),
-> @months := TIMESTAMPDIFF(MONTH, DATE_ADD(date1, INTERVAL @years YEAR), date2), IF (@months = 1, ' month, ', ' months, '),
-> @days := TIMESTAMPDIFF(DAY, DATE_ADD(date1, INTERVAL @years * 12 + @months MONTH), date2), IF (@days = 1, ' day', ' days')
-> );
Query OK, 0 rows affected (0.00 sec)
अब, फंक्शन date_difference में आर्गुमेंट के रूप में डेट मान पास करें:
mysql> SELECT date_difference('2015-11-16','2016-12-17') AS Difference;
+------------------------+
| Difference |
+------------------------+
| 1 year, 1 month, 1 day |
+------------------------+
उपरोक्त परिणाम सेट फंक्शन के आर्गुमेंट के रूप में निर्दिष्ट दो डेट्स के बीच अंतर देता है।
व्याख्या: फंक्शन पहले वर्षों का अंतर निकालता है, फिर शेष महीने, फिर शेष दिन। यह सटीक मानव-पठनीय अंतर देता है।