Tính tuổi (số năm tròn) từ ngày sinh (dob) đến ngày hiện tại.
mysql> SET @dob = '1984-01-17'; Query OK, 0 rows affected (0.00 sec) mysql> SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(CURDATE()) - TO_DAYS(@dob)), '%Y') + 0 AS 'Age in years'; +---------------+ | Age in years | +---------------+ | 33 | +---------------+
Giải thích công thức:
TO_DAYS(date): Chuyển ngày thành số ngày từ năm 0.TO_DAYS(CURDATE()) - TO_DAYS(@dob): Hiệu số ngày (số ngày sống).FROM_DAYS(days): Chuyển ngược thành ngày (ngày 0 + hiệu số ngày).DATE_FORMAT(..., '%Y'): Lấy phần năm của ngày kết quả (số năm tròn).+ 0: Ép kiểu sang số nguyên.
Kết quả: Sinh 17/01/1984, tính đến ngày chạy truy vấn (giả sử 2017) → 33 tuổi.