Sử dụng hàm TIMESTAMPDIFF() với đơn vị YEAR để tính tuổi chính xác từ cột ngày sinh.
Cú pháp
SELECT TIMESTAMPDIFF(YEAR, cotNgaySinh, NOW()) AS Tuoi FROM tenBang;
Ví dụ
Tạo bảng sinh viên:
mysql> create table DemoTable (
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentDOB datetime
);
Query OK, 0 rows affected (0.61 sec)mysql> insert into DemoTable(StudentDOB) values('1996-01-12');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(StudentDOB) values('1990-12-31');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(StudentDOB) values('1989-04-01');
Query OK, 1 row affected (0.45 sec)
mysql> insert into DemoTable(StudentDOB) values('2000-06-17');
Query OK, 1 row affected (0.16 sec)Tính tuổi:
mysql> select timestampdiff(YEAR,StudentDOB,now()) AS AGE from DemoTable;
+------+ | AGE | +------+ | 23 | | 28 | | 30 | | 18 | +------+
Tại sao dùng TIMESTAMPDIFF thay vì DATEDIFF/365? TIMESTAMPDIFF(YEAR, ...) tính đúng theo năm dương lịch (xem xét tháng/ngày), trong khi DATEDIFF/365 sai lệch do năm nhuận.