【发布时间】:2019-02-04 05:37:14
【问题描述】:
我有一个名为 person 的表,其中包含 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
所以我不知道我错过了什么,上面的代码可以计算年龄 - 我相信不是很准确,但理想情况下我想以年、月、日计算人们的年龄,例如 Ton 55 年 1一个月3天,还想计算他的下一个生日到期日,例如下一个生日日期:11个月还有10天等
谢谢
【问题讨论】:
-
您当前使用的
TIMESTAMPDIFF可能是最简洁的方式。它有什么问题? -
谢谢,我想要输出,例如汤姆的年龄是 55 岁 1 个月 3 天,下一个生日将是 11 个月 10 天,所以我上面的代码只给了我粗略的年龄(年),而不是年+月+日
-
您的要求似乎模棱两可。如果某人出生于 6 月 30 日,现在是 8 月 1 日,那么他们的年龄是几月几日?
-
如果上个月刚生了一个婴儿,那么sql将被计算为她的0岁,这不简洁...
-
@ysth 是的,同意,这就是为什么需要社区的帮助