gpt4 book ai didi

mysql - MySQL 中的存储函数不喜欢用户提供的日期?

转载 作者:可可西里 更新时间:2023-11-01 08:38:25 25 4
gpt4 key购买 nike

我在 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,但是有没有办法让我调试它以尝试找出可能发生的情况?

最佳答案

我的第一个猜测是您以 MySQL 无法识别的格式提供日期。 MySQL 对日期文字的格式非常挑剔。它需要 YYYY-MM-DD、YY-MM-DD、YYYYMMDD 或 YYMMDD(您也可以使用任何其他标点符号代替破折号)。参见 The DATETIME, DATE, and TIMESTAMP Types了解更多详情。

您还可以使用 STR_TO_DATE() 将更多日期格式转换为 MySQL 接受的格式功能。

关于调试存储过程和存储函数,你总是可以设置一个带有@前缀的用户自定义变量,这个变量在存储函数返回后全局可用。就像副作用一样。因此,您可以在运行存储函数时使用它来设置诊断信息,然后再进行检查。

关于mysql - MySQL 中的存储函数不喜欢用户提供的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1235895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com