MySQL自定义函数选择记录
我想在MySQL中创建一个自定义函数,它将采用UNIX日期时间戳并将其转换回实际日期,并在该函数中从基于该日期的表中选择一个值。 MySQL自定义函数选择记录
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
OR可能是返回值不是INT。 在这种情况下,试试这个代替:
...
Returns VARCHAR(10)
...
Declare select_year VARCHAR(10);
...
我收到2条警告。第1条警告是“数据在第1行被截断为”当前“列。第二个警告是“数据被截断列'select_date'在第1行”。 – 2015-03-31 12:36:37
尝试'DATE'而不是'current'。它仍然返回NULL或只是警告或截断的结果或什么? – 2015-04-02 08:52:33
可能返回的值不是INT。 – 2015-03-31 04:13:32