从出生日期开始计算带小数的年龄

ran*_*its 5 mysql sql

我的MySQL表中有一个dob字段date.只是一个小的,微不足道的例子是这样的:

mysql> select dob from players limit 5;
+------------+
| dob        |
+------------+
| 1983-12-02 |
| 1979-01-01 |
| 1989-05-11 |
| 1976-03-24 |
| 1989-09-12 |
+------------+
Run Code Online (Sandbox Code Playgroud)

我试图用今天的日期计算小数点的年龄.所以从技术上讲,如果你的生日是1981年6月1日或1981-06-01,这将使你33岁,今天是6月7日..你将是33.(6/365) or 33.02 years old.什么是使用SQL计算这个的最简单的方法?

Abh*_*rty 5

通常,当您想要计算没有任何分数的年份时,在mysql中进行DOB计算非常容易

mysql> select timestampdiff(YEAR,'1981-06-01',now());
+----------------------------------------+
| timestampdiff(YEAR,'1981-06-01',now()) |
+----------------------------------------+
|                                     33 |
+----------------------------------------+
Run Code Online (Sandbox Code Playgroud)

但既然你需要分数,那么这应该可以解决问题

mysql> select format(datediff(curdate(),'1981-06-01') / 365.25,2);
+-----------------------------------------------------+
| format(datediff(curdate(),'1981-06-01') / 365.25,2) |
+-----------------------------------------------------+
| 33.02                                               |
+-----------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

年度被视为365.25天.

因此,在您的情况下,您可以将查询作为

select 
format(datediff(curdate(),dob) / 365.25,2) as dob 
from players limit 5;
Run Code Online (Sandbox Code Playgroud)