我想显示患者年龄的数据。
mysql> select nama,gender,dob,TIMESTAMPDIFF(YEAR,dob,now()) as age from sampelaja; +------------------+--------+------------+------+ | nama | gender | dob | age | +------------------+--------+------------+------+ | Rizkiyandi | 1 | 2010-05-21 | 4 | | Siti Khodijah | 0 | 1980-03-15 | 34 | | Aisyah Az-zahra | 0 | 1986-08-17 | 28 | | Paritem | 0 | 2005-12-13 | 8 | | Ngadimin | 1 | 2014-08-28 | 0 | +------------------+--------+------------+------+ 10 rows in set (0.00 sec)
这里有一个问题,当有一个4天大的婴儿被认为是0岁时 我想要这样的结果
+------------------+--------+------------+------+-------+------+ | nama | gender | dob | year | month | day | +------------------+--------+------------+------+-------+------+ | Rizkiyandi | 1 | 2010-05-21 | 4 | 3 | 13 | | Siti Khodijah | 0 | 1980-03-15 | 34 | 5 | 18 | | Aisyah Az-zahra | 0 | 1986-08-17 | 28 | 0 | 16 | | Paritem | 0 | 2005-12-13 | 8 | 8 | 20 | | Ngadimin | 1 | 2014-08-28 | 0 | 0 | 6 | +------------------+--------+------------+------+-------+------+
最佳答案
您可以使用模数来确定月数和天数:
SELECT
nama
, gender
, dob
, TIMESTAMPDIFF( YEAR, dob, now() ) as _year
, TIMESTAMPDIFF( MONTH, dob, now() ) % 12 as _month
, FLOOR( TIMESTAMPDIFF( DAY, dob, now() ) % 30.4375 ) as _day
FROM
sampelaja
结果是:
+-----------------+--------+------------+-------+--------+------+
| nama | gender | dob | _year | _month | _day |
+-----------------+--------+------------+-------+--------+------+
| Rizkiyandi | 1 | 2010-05-21 | 4 | 3 | 13 |
| Siti Khodijah | 0 | 1980-03-15 | 34 | 5 | 19 |
| Aisyah Az-zahra | 0 | 1986-08-17 | 28 | 0 | 17 |
| Paritem | 0 | 2005-12-13 | 8 | 8 | 20 |
| Ngadimin | 1 | 2014-08-28 | 0 | 0 | 6 |
+-----------------+--------+------------+-------+--------+------+
天数是从上个月的生日日期到今天计算的。
数字 30.4375
我使用以下公式计算:[DAYS IN YEAR]/12,其中 [DAYS IN YEAR] = 365.25
关于php - MySQL按年月日计算年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25640011/