我在MySQL存储功能: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,但是有没有办法让我调试这个来试图找出可能发生的事情?
感谢您的提示,我会尽力调试这一点。至于日期这里的东西是我如何打电话给它。 SELECT login_count(3250,'2009-05-31','2009-06-31'); 哪种格式适合,但谁知道发生了什么。我会尝试@的东西,并发布更多信息。 – 2009-08-05 21:56:46
嘿,你的评论让我回去捣鼓日期。我一直在使用YYYY-MM-31一个月的时间,并且它一直工作。但由于某种原因,在这种情况下,它不喜欢六月31日:) – 2009-08-05 22:08:17
嘿!如果我的建议帮助你注意到真正的问题,那么我很高兴。 – 2009-08-05 22:26:54