Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MySQL中的函数验证年龄_Mysql_Sql - Fatal编程技术网

使用MySQL中的函数验证年龄

使用MySQL中的函数验证年龄,mysql,sql,Mysql,Sql,因此,我在使用SQL中的函数时遇到了一些问题,在该函数中,我计算给定日期的年龄。问题是,我需要验证当前日期和出生日期是否已经是年份 例如,我在登记册上的日期是1994-11-15,当我与 选择EmployeeID Num_Emloyee,concat(FirstName,“.”,LastName)Name_员工,头衔Puesto,fn_年龄(出生日期)Edad,fn_年龄(雇佣日期)工作年限 来自员工 它返回24,但是如果我只使用select函数进行查询,它将返回23,即正确答案 目前,这是我用

因此,我在使用SQL中的函数时遇到了一些问题,在该函数中,我计算给定日期的年龄。问题是,我需要验证当前日期和出生日期是否已经是年份

例如,我在登记册上的日期是1994-11-15,当我与

选择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) )
(这在MySQL
WHERE
子句中起作用。)

您还可以执行以下操作:

month(now()) * 100 date(now()) >= month(dateval) * 100 + day(dateval)
这种逻辑没有道理。我不知道
是否支持MySQL中的元组。如果是,您可以执行以下操作:

(month(now()), date(now())) >= ( month(dateval), day(dateval) )
(这在MySQL
WHERE
子句中起作用。)

您还可以执行以下操作:

month(now()) * 100 date(now()) >= month(dateval) * 100 + day(dateval)
您还可以使用-function

您还可以使用-function