php - MySQL按年月日计算年龄

标签 php mysql

我想显示患者年龄的数据。


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/

相关文章:

javascript - 根据使用ajax选择的值填充多个字段

php - CakePHP,保存和访问逗号分隔的 MySQL 列以进行 "group"标识

mysql - 无法使用 Laravel 5 连接到 Mysql 服务器

php - 在执行函数之前检查sql中的日期时间

php - Laravel 迁移 - 列已存在

php - 如何使用 opentbs 在 docx 中插入条件空格(仅当某些字段不为空时)

mysql - 如何根据日期对 MYSQL 数据库中的数据进行求和、分组和拆分

python - 如何使用 python_ columns 将 csv 文件插入数据库

mysql - 错误 1064 (42000) : You have an error in your SQL syntax; to set permission

php - 写入 $_POST 是不好的做法吗?