使用MySQL中的函数验证年龄

时间:2018-11-09 21:30:45

标签: mysql sql

所以我在使用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 个答案:

答案 0 :(得分:1)

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)

答案 1 :(得分:1)

您还可以使用timestampdiff功能

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