【发布时间】:2020-03-11 10:46:33
【问题描述】:
我想在 mysql 5.7 中创建一个函数,它接收两个日期并检查是否存在差异。如果是,则应在第二个日期上增加一天并返回。如果没有,它应该返回没有任何操作的日期。
不幸的是,每次我想保存函数时都会收到语法错误(使用具有完整权限的 TablePlus)。
我的功能:
CREATE FUNCTION `CheckCreatedAt`(timeStart DATETIME, timeEnd DATETIME) RETURNS datetime
BEGIN
DECLARE newDate DATETIME;
IF TIMESTAMPDIFF(DAY, timeStart, timeEnd) != 0
THEN
SET newDate = DATE_ADD(timeEnd, INTERVAL 1 DAY);
ELSE
SET newDate = timeEnd;
END IF;
RETURN newDate;
END
错误信息:
您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 'ELSE SET newDate = timeEnd; 附近如果结束;
返回新日期; END' 在第 6 行
【问题讨论】:
-
我没有看到任何证据表明您正在设置分隔符。dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html
-
看起来问题出在 ELSE 行开头的不可见字符。删除它,你应该没问题。
-
我同意@slaakso 将代码复制/粘贴到一个体面的编辑器中。您有一个损坏,在
INVERVAL 1 DAY);之后和ELSE之前显示为37和?
标签: mysql mysql-function