MySQL自定义函数选择记录

时间:2015-03-31 03:46:37

标签: 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值。

1 个答案:

答案 0 :(得分:0)

您必须在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

OR可能是返回值不是INT。 在这种情况下,请尝试这样做:

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