首页 > 解决方案 > 如何修复“MySQL 1064 错误语法工作台”

问题描述

我是 mysql 新手,我的代码有这个问题

CREATE FUNCTION fnejEdad_Obtener
(

p_fechaNacimiento date,

p_fechaHoy date
)

RETURNS int

BEGIN

    declare v_edad int;

set v_edad = TIMESTAMPDIFF (year,p_fechaNacimiento, p_fechaHoy);

if (DATEPART(month, p_fechaNacimiento) > DATEPART(month,p_fechaHoy))
    then

set v_edad = v_edad - 1;

else if
(DATEPART
(month, p_fechaNacimiento) <= DATEPART
(month,p_fechaHoy)) and
(DATEPART
(DAY, p_fechaNacimiento) > DATEPART
(DAY,p_fechaHoy))
    then
set v_edad = v_edad - 1;

end
if;

    IF v_edad < 0 THEN
SET v_edad = 0;
END
IF; -- > update 

    RETURN v_edad;

END;

标签: mysql

解决方案


您的功能必须如下。Elseif 必须一起写。

DELIMITER //
    CREATE FUNCTION fnejEdad_Obtener
    (p_fechaNacimiento date,p_fechaHoy date)

    RETURNS int

    BEGIN

        declare v_edad int;

        set v_edad = TIMESTAMPDIFF(year,p_fechaNacimiento, p_fechaHoy);

        if (DATEPART(month, p_fechaNacimiento) > DATEPART(month,p_fechaHoy)) then    
          set v_edad = v_edad - 1;      
        elseif
          (DATEPART(month, p_fechaNacimiento) <= DATEPART(month,p_fechaHoy)) and
          (DATEPART(DAY, p_fechaNacimiento) > DATEPART(DAY,p_fechaHoy)) then
         set v_edad = v_edad - 1;

        end if;

        IF v_edad < 0 THEN
        SET v_edad = 0;
        END IF; -- > update 

        RETURN v_edad;

    END

//

DELIMITER ;

推荐阅读