Mysql 连接名称和日期的SQL存储函数
我正在尝试编写一个存储函数,它接受日期(2020-09-04)和名称,然后返回一个字符串,比如名称生日是2020年9月4日。我从下面开始,找到了问题所在Mysql 连接名称和日期的SQL存储函数,mysql,sql,stored-functions,Mysql,Sql,Stored Functions,我正在尝试编写一个存储函数,它接受日期(2020-09-04)和名称,然后返回一个字符串,比如名称生日是2020年9月4日。我从下面开始,找到了问题所在 DELIMITER // CREATE FUNCTION concatenate(X CHAR(24),Y date date)) Returns CHAR(50) BEGIN declare month char(20); SELECT month(date, %m) into month; Return concat(X, 'Birthda
DELIMITER //
CREATE FUNCTION concatenate(X CHAR(24),Y date date))
Returns CHAR(50)
BEGIN
declare month char(20);
SELECT month(date, %m) into month;
Return concat(X, 'Birthday is', ' ', month);
END//
DELIMITER ;
您的脚本存在多个问题:
- 第一行(第二个参数)有一个括号和数据类型
- 您正在使用(
)作为变量名,而没有引用月
- 不支持两个参数
- 这不是问题,而是建议:使用适当的变量名(不仅仅是
和X
)Y
CREATE FUNCTION concatenate(name CHAR(24), birthday DATE)
RETURNS CHAR(50)
BEGIN
RETURN CONCAT_WS(' ', name, 'Birthday is', DATE_FORMAT(birthday, '%b %d, %Y'));
END
您可以使用如下功能:
-- simple example
SELECT concatenate('Tim', now()); -- Tim Birthday is Sep 04, 2020
-- or
SELECT concatenate(name, birthday)
FROM table_name
但您也可以直接在SELECT
语句上使用逻辑,而不使用UDF:
SELECT CONCAT_WS(' ', name, 'Birthday is', DATE_FORMAT(birthday, '%b %d, %Y'))
FROM table_name
你需要确定你想要的日期,因为你必须按照《诗篇》的建议使用 不应使用like MONTH,这将导致注意到的错误,但出于您的目的,使用用户定义的变量@MONTH更简单 使用 结果
# concatenate('temp','2020-01-01')
temp's Birthday is Jan 01, 2020
或者你用
DELIMITER //
CREATE FUNCTION concatenate(X CHAR(24),Y date )
Returns CHAR(50)
DETERMINISTIC
BEGIN
SELECT DATE_FORMAT(Y, '%b %d, %Y') INTO @month;
Return concat(X, "'s Birthday is ", @month);
END//
DELIMITER ;
在这里查看日期函数MySql不使用t-SQL。只有Sybase和MS SQL Server使用T-SQL。我进行了编辑,将术语UDF替换为存储函数,因为您没有编写UDF。是MySQL的术语,您可以用C或C++编写代码,并将其编译为MySQL服务器的扩展。你在写一篇文章。
DELIMITER //
CREATE FUNCTION concatenate(X CHAR(24),Y date )
Returns CHAR(50)
DETERMINISTIC
BEGIN
SELECT DATE_FORMAT(Y, '%b %d, %Y') INTO @month;
Return concat(X, "'s Birthday is ", @month);
END//
DELIMITER ;