我想显示患者年龄的数据。
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 |
+------------------+--------+------------+------+-------+------+
9条答案
按热度按时间91zkwejq1#
您可以使用modulo来确定月和天的计数:
结果是:
天数是从上个月的生日到今天计算的。
使用以下公式计算的数量
30.4375
I:[年天数]/12,其中[年天数] = 365.25bnl4lu3b2#
您应该能够使用下面的查询计算此值。该查询计算精确的年、月和日。
这些信息也可以在mysql日期计算页面找到:http://dev.mysql.com/doc/refman/5.0/en/date-calculations.html
jjjwad0x3#
接受答案存在问题
接受答案中的方法是好的,但闰年在生日时会出错。下面是一些测试案例:
我的方法是,只使用算术
测试用例及结果:
9bfwbjaz4#
当日期是同一天的时候,Jaugar Chang的答案中的日期栏有一个小问题。我认为下面的内容可以纠正这个问题:
为了完整起见,Jaugar的回答的修正版本如下:
bybem2ql5#
这是一个我用来计算年龄的查询,以年、月、日为单位
qlckcl4x6#
下面的函数是从各种资源中复制并合并成一个。这将返回完整的日期,以年,月和日表示。也可以修改它以显示任何一个。还可以将current_time作为输入,以便我们也可以计算相对于任何其他日期的年龄。
t3psigkw7#
c90pui9n8#
你可以用
当你除以30.4375精确的日子,你可能不会得到正确的答案。所以你可以计算精确的月份到dob,并从今天的日期减去该日期得到确切的日子。你可以检查/验证相同使用在线年龄计算器在这里https://www.calculator.net/age-calculator.html
l0oc07j29#