在mysql中使用函数验证年龄

bbmckpt7  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(313)

所以我在使用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

有什么我没考虑的吗?

z5btuh9x

z5btuh9x1#

也可以使用timestampdiff函数

select timestampdiff(year, '1994-11-15', now());
dm7nw8vv

dm7nw8vv2#

day(now()) and month(now()) >= day(dateVal) and month(dateVal)

这种逻辑没有道理。我不知道 if 支持mysql中的元组。如果是这样,您可以:

(month(now()), date(now())) >= ( month(dateval), day(dateval) )

(这在mysql中工作 WHERE 条款。)
您还可以执行以下操作:

month(now()) * 100 date(now()) >= month(dateval) * 100 + day(dateval)

相关问题