gpt4 book ai didi

mysql - 创建一个 mysql 函数来操作日期

转载 作者:行者123 更新时间:2023-11-29 15:29:04 25 4
gpt4 key购买 nike

我想在 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

错误消息:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ELSE SET newDate = timeEnd; END IF;

RETURN newDate; END' at line 6

最佳答案

创建存储过程和函数时,需要更改分隔符,以便通知 MySQL 代码结束位置。

这是使用DELIMITER命令实现的。例如:

DELIMITER $$

将分隔符更改为双美元。

将您的代码修改为以下内容,它将创建您的函数(除非其他语法错误):

DELIMITER $$
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$$
DELIMITER ;

这会将分隔符更改为 $$,将 $$ 添加到函数的 END 语句中,然后将分隔符恢复为;(默认)。

关于mysql - 创建一个 mysql 函数来操作日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58874350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com