Câu trả lời đơn giản là không; không bao giờ lưu trữ một tuổi người. Nó thay đổi đối với mỗi người hàng năm nhưng, như bạn nói, bạn phải kiểm tra xem nó có chính xác cho mỗi người hàng ngày hay không.
Chỉ lưu trữ ngày sinh, sau đó tính tuổi khi chọn từ cơ sở dữ liệu. Chỉ có today - date of birth
vì vậy hầu như không sử dụng CPU.
CHỈNH SỬA:
Để mở rộng nhận xét của tôi trong câu trả lời của ManseUK
cũng có khả năng thất bại. Điều gì xảy ra nếu máy chủ / cơ sở dữ liệu của bạn không hoạt động? Hoặc bản cập nhật của bạn không chạy vào thời gian được chỉ định của nó? Hoặc ai đó đến và chạy nó theo cách thủ công sau khi bản cập nhật đã được chạy cho ngày đó? Hoặc ai đó tắt trình lên lịch của bạn? Điều này sẽ không có nguy cơ xảy ra nếu bạn tính toán Age
khi bạn chọn từ cơ sở dữ liệu.
Để chọn độ tuổi từ 25 đến 30 tuổi và giả sử cột DATE dateofbirth
truy vấn của bạn sẽ giống như sau:
select *
from users
where dateofbirth between date_add( curdate(), interval -30 year )
and date_add( curdate(), interval -25 year )
Đảm bảo người dùng users
được lập chỉ mục trên dateofbirth
.