尝试在存储过程循环中使用timestamp变量时遇到问题。在下文中,gtime是TIMESTAMP输入变量,samples是INTEGER输入变量
...
DECLARE t TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
DECLARE i,step INT DEFAULT 0;
SET t = gtime;
myLabel: LOOP
IF i = samples THEN
LEAVE myLabel;
END IF;
SELECT a, b FROM myTable
WHERE myField = 1
AND g_time > t
AND g_time < '2011-09-06 00:00:09';
SET i = i + 1;
SET t = t + 1500;
ITERATE myLabel;
END LOOP myLabel;
...
虽然i正确地改变了它的值并且循环执行了“samples”次,但是t不受影响,因此SELECT语句不能正常工作。 t变量始终是其原始值。
为什么t变量保持不变?我也尝试使用while语句,但问题仍然存在。是否禁止在SELECT中使用随循环而变化的变量?
答案 0 :(得分:1)
您无法将1500
整数添加到TIMESTAMP
。要执行日期算术,您需要使用INTERVAL
:
SET t = t + INTERVAL 25 MINUTE;