使用MySQL中的函数验证年龄
因此,我在使用SQL中的函数时遇到了一些问题,在该函数中,我计算给定日期的年龄。问题是,我需要验证当前日期和出生日期是否已经是年份 例如,我在登记册上的日期是1994-11-15,当我与使用MySQL中的函数验证年龄,mysql,sql,Mysql,Sql,因此,我在使用SQL中的函数时遇到了一些问题,在该函数中,我计算给定日期的年龄。问题是,我需要验证当前日期和出生日期是否已经是年份 例如,我在登记册上的日期是1994-11-15,当我与 选择EmployeeID Num_Emloyee,concat(FirstName,“.”,LastName)Name_员工,头衔Puesto,fn_年龄(出生日期)Edad,fn_年龄(雇佣日期)工作年限 来自员工 它返回24,但是如果我只使用select函数进行查询,它将返回23,即正确答案 目前,这是我用
选择EmployeeID Num_Emloyee,concat(FirstName,“.”,LastName)Name_员工,头衔Puesto,fn_年龄(出生日期)Edad,fn_年龄(雇佣日期)工作年限
来自员工代码>
它返回24,但是如果我只使用select函数进行查询,它将返回23,即正确答案
目前,这是我用来验证年龄的函数:
create function fn_Age(dateVal date)
returns int
begin
declare age int;
if day(now()) and month(now()) >= day(dateVal) and month(dateVal) then
set age=year(now())-year(dateVal);
else
set age=(year(now())-year(dateVal)) - 1;
end if;
return age;
end
函数中有什么我没有考虑的吗
day(now()) and month(now()) >= day(dateVal) and month(dateVal)
这种逻辑没有道理。我不知道是否支持MySQL中的元组。如果是,您可以执行以下操作:
(month(now()), date(now())) >= ( month(dateval), day(dateval) )
(这在MySQLWHERE
子句中起作用。)
您还可以执行以下操作:
month(now()) * 100 date(now()) >= month(dateval) * 100 + day(dateval)
这种逻辑没有道理。我不知道是否支持MySQL中的元组。如果是,您可以执行以下操作:
(month(now()), date(now())) >= ( month(dateval), day(dateval) )
(这在MySQLWHERE
子句中起作用。)
您还可以执行以下操作:
month(now()) * 100 date(now()) >= month(dateval) * 100 + day(dateval)
您还可以使用-function
您还可以使用-function