【发布时间】:2014-07-15 01:11:04
【问题描述】:
我有一个存储过程,理论上应该返回前一个月,但它返回 void。
DROP PROCEDURE `open_month` ;
CREATE DEFINER = `root`@`localhost` PROCEDURE `open_month` ( IN `data` VARCHAR( 7 ) ) NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY INVOKER
BEGIN
DECLARE DATAv VARCHAR( 10 ) DEFAULT "";
SET DATAv = CONCAT( data, '-01' ) ;
SELECT *
FROM incom
WHERE MONTH( DATA ) = MONTH( DATAv - INTERVAL 1
MONTH ) ;
END
我快 24 小时都醒着,无法猜测问题所在。但我可以建议,在 phpmyadmin 的查询监视器中,如果您将 DATAv 设置为用户 var (@),则该查询有效。 提前谢谢!
【问题讨论】:
-
您能否发布
data参数的示例值和预期的上个月值? -
你必须声明一个日期来代替 varchar 变量
-
我的第一个意图是从月份输入中获取“2014-04”,并且在没有 php 帮助的情况下在程序中进行处理。在纯粹的查询中,我得到了这样的方式。我的测试中的一个示例是上面的“2014-04”连接“2014-04-01”以获得月份1“2014-03-1”并获得月份“3”
标签: mysql stored-procedures phpmyadmin