Php 如何在函数选择中使用IF和ELSE?
以下代码将根据公历计算年龄: 我有两行sql代码,我将使用IF和ELSE 这就是我想要的: 问:在上面的代码中,如果工作正常,但是其他不工作 更多信息:不必使用当前日期,任何可以用来解决此问题的内容。如果我们输入任何名称,它也会起作用!!!!因为当前日期是2015年,所以我将其用于样本Php 如何在函数选择中使用IF和ELSE?,php,mysql,sql,function,if-statement,Php,Mysql,Sql,Function,If Statement,以下代码将根据公历计算年龄: 我有两行sql代码,我将使用IF和ELSE 这就是我想要的: 问:在上面的代码中,如果工作正常,但是其他不工作 更多信息:不必使用当前日期,任何可以用来解决此问题的内容。如果我们输入任何名称,它也会起作用!!!!因为当前日期是2015年,所以我将其用于样本 谢谢你我要把你所有的东西都粉碎成一个mysql,否则: IF(YEAR(CURRENT_DATE)>1600, FLOOR((TO_DAYS(GREATEST(IF(decease_date='000
谢谢你我要把你所有的东西都粉碎成一个mysql,否则:
IF(YEAR(CURRENT_DATE)>1600,
FLOOR((TO_DAYS(GREATEST(IF(decease_date='0000-00-00',CURRENT_DATE,decease_date),
IFNULL(decease_date,CURRENT_DATE))) - TO_DAYS(birth_date)) / 365),
(FLOOR((TO_DAYS(GREATEST(IF(decease_date='0000-00-00',CURRENT_DATE,decease_date),
IFNULL(decease_date,CURRENT_DATE))) - TO_DAYS(birth_date)) / 365.25) - 621)
) as age
因此,如果条件,中间的sql,或者底部的sql=列年龄。如果我理解正确,你想计算一个人的年龄, 在特定的出生和死亡日期之前。后者可以是0000-00-00或NULL,两者都可以 意思是这个人还活着。此外,您还希望检测日期 由波斯日历给出,并相应地更正计算。 假设日期在1600年之前,与波斯历法一致 描述中似乎有两个错误:
IFNULL(NULLIF(decease_date, '0000-00-00'),CURRENT_DATE)
这会将“0000-00-00”视为NULL,然后将NULL替换为当前_日期
原始公式计算死亡日期和出生日期之间的天数差,然后
将结果除以365.25,得到它们之间的年数。但是为了得到号码
使用该函数可以完成两天之间的年数,因此您可以获得:
TIMESTAMPDIFF(YEAR,
IFNULL(NULLIF(decease_date, '0000-00-00'), CURRENT_DATE),
birth_date) as age
最后,您需要执行波斯日历检测。请注意,如果死者
理论上没有必要做任何不同的事情;我们可以假设出生日期和死亡日期是相同的
由同一日历给出,因此年龄将正确计算。
如果此人没有死亡日期(即此人仍然活着),则会出现差异。
在这种情况下,您需要检查出生日期是否在1600(波斯语)之前
日历)并从结果中减去621年。
现在,尽管这是一种方法,但我建议另一种方法:
我们可以对总结果进行模运算,实际上可以归结为
减去621表示年龄会比这高。我们使用(与MOD函数相同):
就这样。不需要另一个IF。请显示您的数据表架构、存储的数据样本和预期结果。当您计算年龄时,为什么需要死亡日期?要计算一个人的年龄,通常你只需要他的出生日期和当前日期?我更新了我的问题,死亡日期是指患者死亡时的年龄和他的年龄!!在临床史上,为什么?你为生日保留什么样的数值?在我们的日历中,一年是365.25,但你把365作为生日。在这两种情况下都不应该是365.25吗?它不起作用,需要找到另一种方法来使用if和else。
TIMESTAMPDIFF(YEAR,
IFNULL(NULLIF(decease_date, '0000-00-00'), CURRENT_DATE),
birth_date) as age
TIMESTAMPDIFF(YEAR,
IFNULL(NULLIF(decease_date, '0000-00-00'),
CURRENT_DATE),
birth_date) % 621 as age