我要做的是在语句
中设置值cptDATE_ADD(firstqDate,INTERVAL @val DAY)
让每个循环扫描成为新的日期。
此声明是来自库存过程的一行,其中2个值取决于日期和之前的日期。这是库存程序:
DROP PROCEDURE IF EXISTS updating_all_qch;
DELIMITER $$
CREATE PROCEDURE updating_all_qCh()
BEGIN
DECLARE firstqDate,date2 date;
DECLARE p, c float;
DECLARE cpt, val int;
set val = 0;
select count(*) into cpt from quotes;
SET @firstqDate = (select qDate from quotes ORDER BY YEAR(qDate) ASC, MONTH(qDate) ASC, DAY(qDate) ASC limit 1,1);
WHILE val <= cpt DO
SET date2 = (select qDate from quotes where qDate like DATE_ADD(firstqDate, INTERVAL @val DAY );
SET p = (select qOp from quotes where qDate date2
SET c = (select qCl from quotes where qDate like DATE_SUB(date2, INTERVAL 1 DAY));
update quotes
set qCh = (p * (100/c) ) / 100;
set val = val + 1;
end while;
END$$
我不知道为什么,但mysql在第11行引发错误。
我的问题:有没有办法在函数date_add的值区间设置一个cpt来得到像 val = 0&gt;&gt;&gt; DATE_SUB(date2,INTERVAL 0天) val = 1&gt;&gt;&gt; DATE_SUB(date2,INTERVAL 1 DAY)
感谢您阅读
答案 0 :(得分:0)
我认为你需要在DATE前面使用Date函数)ADD如下, SET date2 =(从引号中选择qDate,其中qDate与date相同(DATE_ADD(firstqDate,INTERVAL @val DAY));