我在 MySQL 中有一个存储函数:
CREATE FUNCTION `login_count`(o INT, start_date DATE, end_date DATE) RETURNS INT
READS SQL DATA
BEGIN
DECLARE total_count INT;
SELECT COUNT(*) INTO total_count FROM logins as l WHERE `order_id` = o && modified BETWEEN start_date AND end_date;
RETURN total_count;
END
非常基本,需要一个 id、开始日期和结束日期,并返回该日期范围内的登录次数。每当我运行它时,我都会返回 0。除非我删除了 where 子句的日期部分。然后它返回一个实际数字。或者,如果我只是手动将日期放入存储的函数中,它就可以工作......所以这不是日期的问题,但只有当我通过参数列表提供日期时它才会不喜欢它。
有什么想法会导致这种情况发生吗?我可以手动将日期放入存储的函数中这一事实确实让我感到烦恼。这里并没有发生很多事情可能会搞砸,所以我有点迷失了下一步该尝试什么。
此外,有没有办法调试存储的函数/过程。我只是得到一个 0 回来,但是有没有办法让我调试它来尝试找出可能发生的事情?