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

คำนวณอายุจากวันเกิดใน MySQL

วิธีคำนวณอายุจากวันเกิด (Date of Birth) ใน MySQL

ใช้ฟังก์ชัน TIMESTAMPDIFF() ซึ่งคำนวณความต่างระหว่างสองวันที่ในหน่วยที่กำหนด (YEAR, MONTH, DAY, ฯลฯ)

SELECT TIMESTAMPDIFF(YEAR, yourColumnName, NOW()) AS age FROM yourTableName;

ตัวอย่างการใช้งาน

สร้างตารางนักเรียนและวันเกิด:

mysql> create table DemoTable (
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentDOB datetime
);
mysql> insert into DemoTable(StudentDOB) values('1996-01-12');
mysql> insert into DemoTable(StudentDOB) values('1990-12-31');
mysql> insert into DemoTable(StudentDOB) values('1989-04-01');
mysql> insert into DemoTable(StudentDOB) values('2000-06-17');

ข้อมูลวันเกิด:

+-----------+---------------------+
| StudentId | StudentDOB          |
+-----------+---------------------+
| 1         | 1996-01-12 00:00:00 |
| 2         | 1990-12-31 00:00:00 |
| 3         | 1989-04-01 00:00:00 |
| 4         | 2000-06-17 00:00:00 |
+-----------+---------------------+

คำนวณอายุ (สมมติวันนี้คือ 2019-04-16):

mysql> select timestampdiff(YEAR, StudentDOB, now()) AS AGE from DemoTable;
+------+
| AGE  |
+------+
| 23   |
| 28   |
| 30   |
| 18   |
+------+

ข้อดีของ TIMESTAMPDIFF:

  • คำนวณอายุถูกต้องตามวันเกิดจริง (ไม่ใช่แค่ลบปี)
  • รองรับหน่วยอื่นๆ: MONTH, DAY, HOUR, MINUTE, SECOND, MICROSECOND
  • ทำงานได้กับ DATE, DATETIME, TIMESTAMP

วิธีเก่า (ไม่แนะนำ): FLOOR(DATEDIFF(NOW(), dob)/365.25) - ไม่แม่นยำในปีอธิกสุรทิน