ลองแบบนี้ดูครับ
select pt.birthday,vn.vstdate,vn.age_y,vn.age_m,vn.age_d,timestampdiff(year,pt.birthday,vn.vstdate) as cnt_year,
timestampdiff(month,pt.birthday,vn.vstdate)-(timestampdiff(year,pt.birthday,vn.vstdate)*12) as cnt_month,
timestampdiff(day,date_add(pt.birthday,interval (timestampdiff(month,pt.birthday,vn.vstdate)) month),vn.vstdate) as cnt_day
from vn_stat vn
left outer join patient pt on pt.hn=vn.hn
limit 10