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

MySQL: คำนวณอายุจากวันเกิด (DATE_FORMAT + DATEDIFF)

สูตรคำนวณอายุ

SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), 'yourDateOfBirth')), '%Y') + 0 AS Age;

การทำงาน

  1. DATEDIFF(NOW(), 'dob'): หาจำนวนวันระหว่างวันนี้กับวันเกิด
  2. FROM_DAYS(days): แปลงวันเป็น Date (จาก Year 0)
  3. DATE_FORMAT(..., '%Y'): ดึงเฉพาะปี
  4. + 0: แปลง String '23' → Number 23

ตัวอย่าง

คำนวณอายุจาก '2010-11-25'

SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), '2010-11-25')), '%Y') + 0 AS Age;
+------+
| Age  |
+------+
| 8    |
+------+

ใช้กับคอลัมน์ในตาราง

mysql> create table AgeCalculationFromDatetime (YourDateofBirth datetime);
mysql> insert into AgeCalculationFromDatetime values('1995-11-25');
mysql> SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), YourDateofBirth)), '%Y') + 0 AS Age FROM AgeCalculationFromDatetime;
+------+
| Age  |
+------+
| 23   |
+------+

วิธีอื่น (MySQL 8.0+)

SELECT TIMESTAMPDIFF(YEAR, YourDateofBirth, NOW()) AS Age FROM AgeCalculationFromDatetime;

TIMESTAMPDIFF คำนวณตรงได้ ไม่ต้องแปลงผ่าน FROM_DAYS เร็วกว่าและแม่นยำกว่า