Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

สร้างฟังก์ชันคำนวณความต่าง ปี เดือน วัน ระหว่าง 2 วันที่ใน MySQL

สร้างฟังก์ชัน date_difference ที่รับ 2 วันที่ ส่งคืนข้อความความต่าง:

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)

ทดสอบใช้งาน

mysql> SELECT date_difference('2015-11-16', '2016-12-17') AS Difference;
+------------------------+
| Difference             |
+------------------------+
| 1 year, 1 month, 1 day |
+------------------------+

ฟังก์ชันนี้ใช้ TIMESTAMPDIFF คำนวณทีละหน่วยจากใหญ่ไปเล็ก (ปี → เดือน → วัน) เพื่อให้ผลลัพธ์แม่นยำ