1

尝试在存储过程的循环中使用时间戳变量时遇到问题。在下面,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 正确更改其值并且循环执行“样本”次,但 t 不受影响,因此 SELECT 语句无法正常工作。t 变量始终具有其原始值。

任何想法为什么 t 变量保持不变?我也尝试使用 while 语句,但问题仍然存在。是否禁止在 SELECT 中使用随循环而变化的变量?

4

1 回答 1

1

您不能将整数添加1500TIMESTAMP. 要执行日期算术,您需要使用INTERVAL

SET t = t + INTERVAL 25 MINUTE;
于 2012-05-09T10:02:34.480 回答