人们的年龄计算

时间:2019-02-04 05:37:14

标签: mysql sql database

我有一个表,该表具有id,name,dob 3列, 示例数据如下:

INSERT INTO person(id,name,dob) VALUES
   (1,'Ton','1964-01-02'),
   (2,'Luck','1960-01-20').....

select
   name, dob,
   current_timestamp() as curren_date,
   timestampdiff(year, dob, curdate()) as age,
   timestampdiff(month, dob, curdate()) as age,
   timestampdiff(day, dob, curdate()) as age,
   date_format(dob, '%m'),
   month(curdate()),
   timestampdiff(month,  date_format(dob, '%m'),month(curdate())),
   DATEDIFF(dob, curdate()) AS DateDiff

from
    person

所以我不知道自己想念什么,上面的代码可以以年为单位计算年龄,我认为不是很准确,但是理想情况下,我想以年,月,日为单位计算人们的年龄,例如吨55岁1 3个月,还想计算他的下一个生日到期日,例如,下一个生日:还剩11个月10天,等等

谢谢

1 个答案:

答案 0 :(得分:0)

您可以准确地计算出年龄(岁):

select (case when date_format(dob, '%m-%d') >= date_format(now(), '%m-%d')
             then year(now()) - year(dob)
             else year(now()) - year(dob) - 1
        end)

我相信这可以处理所有极端情况-例如leap年。它可以准确地统计到一天的年龄。

我从来不喜欢几年/几个月/几天,因为我认为定义不清楚。您将需要提供所需样本。