我正在尝试从日期( pfecha 输入)开始经过若干天( pplazo 输入)的最终日期,并避免计算表格中列出的某些日期( feriado )。
到目前为止,这就是我所使用的存储过程:
输入参数:
pfecha - DATE
pplazo - INT(11)
PROC:BEGIN
DECLARE i INT(1);
START TRANSACTION;
SET i=1;
lazo:LOOP
IF NOT EXISTS (SELECT * FROM feriados WHERE feriado=pfecha+i)
THEN
SET pfecha=pfecha+1;
SET i=i+1;
END IF;
IF i=pplazo
THEN
LEAVE lazo;
END IF;
END LOOP lazo;
COMMIT;
SELECT pfecha as respuesta;
END
问题是,当计算的日期使日期过去到月底时,那么" respuesta "转向0000-00-00 这不应该发生,如果我从2016-04-20开始输入15天,那么结果日期应该是2016-05-5。
你能发现我的错误吗?你能指出我正确的方向吗?