我想要做的是在语句中设置值cpt
DATE_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 >>> DATE_SUB(date2,INTERVAL 0 DAY)val = 1 >>> DATE_SUB(date2,INTERVAL 1 DAY) )
谢谢你的阅读
1 回答
我认为你需要在DATE前面使用Date函数)ADD如下,SET date2 =(从引号中选择qDate,其中qDate就像date(DATE_ADD(firstqDate,INTERVAL @val DAY));