Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 连接名称和日期的SQL存储函数_Mysql_Sql_Stored Functions - Fatal编程技术网

Mysql 连接名称和日期的SQL存储函数

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

我正在尝试编写一个存储函数,它接受日期(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, '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 ;