【发布时间】:2020-12-18 16:18:53
【问题描述】:
我在mysql上有以下内容:
DELIMITER //
CREATE FUNCTION dateDiff1(contract_id INT, cust_id INT)
RETURNS INT
BEGIN
DECLARE startDate, endDate DATETIME;
DECLARE result int;
SET startDate = (SELECT startDate FROM contract WHERE insurance_cover_id = contract_id AND customer_id = cust_id);
SET endDate = (SELECT endDate FROM contract WHERE insurance_cover_id = contract_id AND customer_id = cust_id);
SET result = (SELECT TIMESTAMPDIFF(MONTH, endDate, startDate));
RETURN result;
END;
//
DELIMITER ;
SELECT dateDiff1(1,1);
它返回NULL,有什么建议吗?
【问题讨论】:
-
顺便说一句,这可以在一个查询中完成:
RETURN (SELECT TIMESTAMPDIFF(MONTH, endDate, startDate) FROM contract WHERE insurance_cover_id = contract_id AND customer_id = cust_id); -
你尝试过什么调试问题?
-
不要为变量使用与列名相同的名称。它选择的是变量,而不是列。
-
或者将查询改为
SELECT contract.startDate ... -
您确定您的表中存在contract_id 1 和cust_id 1 的数据吗?
标签: mysql create-function