MySQL自定义函数选择记录

标签 mysql sql function

我正在尝试在 MySQL 中创建一个自定义函数,该函数将采用 UNIX 日期时间戳并将其转换回实际日期,并在该函数中根据该日期从表中选择一个值。

Create function fiscal(current TIMESTAMP)
Returns INT
Begin
    Declare select_date DATE;
    Declare select_year INT(11);
    SET select_date = FROM_UNIXTIME(current);
    SET select_date = DATE_FORMAT(select_date, '%m-%d-%y');
    SET select_year = (SELECT Year FROM DateInfo WHERE DateInfo_ID = select_date);
    Return select_year;
END

它返回一个 NULL 值。

最佳答案

您必须在 RETURNS 语句中指定返回值的数据类型。它可以是任何有效的 MySQL 数据类型。

RETURN 语句向调用者返回一个值。每当到达 RETURN 语句时,存储函数的执行就会立即终止。

对于相同的输入参数,如果存储的函数返回相同的结果,则认为是确定性的,否则认为是不确定性的。

DELIMITER $$
Create function fiscal(current TIMESTAMP)
Returns INT(11) NOT DETERMINISTIC
Begin
    Declare select_date DATE;
    Declare select_year INT(11);
    SET select_date = FROM_UNIXTIME(current);
    SET select_date = DATE_FORMAT(select_date, '%m-%d-%y');
    SET select_year = (SELECT Year FROM DateInfo WHERE DateInfo_ID = select_date);
    Return (select_year);
END

或者返回值可能不是 INT。 在这种情况下,请尝试以下操作:

...
Returns VARCHAR(10)
...
Declare select_year VARCHAR(10);
...

关于MySQL自定义函数选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29360259/

相关文章:

安装 SQL Server Management Studio 后,SQL Server 服务在服务列表中不可用

sql - 如何在不使用 PL/SQL 的 Oracle 中创建此约束

sql - NVL 在查询中使用案例

从 mysql 数据库中检索 java.sql.Date 对象时,Java 方法停止,为什么?

php - 在 PHP 中创建日期

php - 如何编辑我的查询以显示每天的输出?

C - 函数返回二维数组

c++ - std::bind 绑定(bind)函数

javascript - 如何打印出保存在 "contacts"数组中的每个对象

php多表更改