如果我有以下变量:
@q='minute'
@r=5
如何在查询中使用它们,以便形成以下内容:
select CURRENT_TIME - interval 5 minute;
我尝试了以下但是不起作用:
select CURRENT_TIME - interval @r @q;
答案 0 :(得分:0)
您必须使用预准备语句来创建动态查询:
set @q='minute';
set @r=5;
set @sql = concat("select CURRENT_TIME - interval ",@r," ", @q, " into @result_var;");
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
select @result_var;
变量@result_var
将包含时间计算的结果。
更新:准备好的语句不适用于触发器,但如果case when
只有minute
和hour
,则可以使用标准@q
语句变量:
-- procedure body
set @q='hour';
set @r=5;
set @result_var = 0;
case
when @q = 'minute' then
select CURRENT_TIME - interval @r minute into @result_var;
when @q = 'hour' then
select CURRENT_TIME - interval @r hour into @result_var;
end case;
select @result_var;
-- end procedure body
再次:变量@result_var
将包含时间计算的结果。