使用日期创建MySQL函数

时间:2018-01-31 20:11:40

标签: mysql

DELIMITER $$
CREATE FUNCTION current_age (birthdate date)
RETURNS date
BEGIN
        DECLARE age_return date;
        DECLARE rightnow date;
        SET rightnow = date(now());
        SET age_return = timestampdiff(year, rightnow, date(birthdate));
        RETURN age_return;
END  $$
DELIMITER ;

select current_age(date('2017-06-30'));

我正在尝试创建一个多年来差异的功能。我不能让它工作,我不明白为什么,因为以下在功能之外工作正常。

SET @birthdate = '2001-01-01';
SET @rightnow = date(now());
SELECT timestampdiff(year, @rightnow, date(@birthdate))

1 个答案:

答案 0 :(得分:1)

如果我们想要返回年数,则返回类型将是INTDECIMAL等数字类型。我们不会返回DATE数据类型。

DELIMITER $$

CREATE FUNCTION current_age(birthdate DATE)
RETURNS INT
BEGIN
  RETURN TIMESTAMPDIFF(YEAR,birthdate,DATE(NOW()));
END$$

DELIMITER ;