2012-05-09 73 views
1

我試圖在存儲過程的循環中使用時間戳變量時遇到問題。在下文中,gtime是時間戳記輸入變量和樣品是一個INTEGER輸入變量mysql變量和存儲過程中的循環

... 
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適當地改變其值,並且所述環爲「樣品」次執行時,所述噸不受影響,因此SELECT語句無法正常工作。 t變量始終是其原始值。

任何想法爲什麼t變量保持不變?我儘量使用while語句,但問題依然存在。是否禁止在使用循環更改的SELECT中使用變量?

回答

1

您不能將整數1500添加到TIMESTAMP。要執行日期算術,您需要使用INTERVAL

SET t = t + INTERVAL 25 MINUTE; 
+0

不幸的是,它不起作用。 t保持不變。我也試過\t \t \t SET t = TIMESTAMPADD(MINUTE,60,t); 但沒有運氣。出了什麼問題?它是時間戳格式問題嗎? – Fotakis