在mysql中使用函数验证年龄

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

所以我在使用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,正确答案。
目前,我用来验证年龄的函数是:

  1. create function fn_Age(dateVal date)
  2. returns int
  3. begin
  4. declare age int;
  5. if day(now()) and month(now()) >= day(dateVal) and month(dateVal) then
  6. set age=year(now())-year(dateVal);
  7. else
  8. set age=(year(now())-year(dateVal)) - 1;
  9. end if;
  10. return age;
  11. end

有什么我没考虑的吗?

byqmnocz

byqmnocz1#

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

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

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

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

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

gopyfrb32#

也可以使用timestampdiff函数

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

相关问题