2012-05-09 2 views
1

У меня возникла проблема при попытке использовать переменную timestamp в цикле хранимой процедуры. В дальнейшем, gtime является входной переменной ТШЕЗТАМР и образцы является входным целочисленной переменнойпеременные 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; 
... 

В то время как я изменить его значение должным образом, и цикл выполняется для «образцов» времена, т не влияет, и, таким образом, Выражение 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

Смежные вопросы