所以我在使用sql中的一个函数时遇到了一些问题,在这个函数中我计算给定日期的年龄。问题是,我需要验证当前日期和出生日期,如果它已经是一年或不是。
例如,我在登记册上的日期是1994年11月15日,当我向 select EmployeeID Num_Emloyee, concat(FirstName, " . ", LastName) Name_Employee, Title Puesto, fn_Age(BirthDate) Edad, fn_Age(HireDate) WorkYears from employees;
它返回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
有什么我没考虑的吗?
2条答案
按热度按时间z5btuh9x1#
也可以使用timestampdiff函数
dm7nw8vv2#
这种逻辑没有道理。我不知道
if
支持mysql中的元组。如果是这样,您可以:(这在mysql中工作
WHERE
条款。)您还可以执行以下操作: