select pt.birthday,curdate(),
timestampdiff(year,pt.birthday,curdate()) as cnt_year,
timestampdiff(month,pt.birthday,curdate())-(timestampdiff(year,pt.birthday,curdate())*12) as cnt_month,
timestampdiff(day,date_add(pt.birthday,interval (timestampdiff(month,pt.birthday,curdate())) month),curdate()) as cnt_day
from patient pt
where pt.hn='00016597'
ลองแบบนี้ดูครับ