【发布时间】:2017-04-26 23:27:10
【问题描述】:
如果我有以下变量:
@q='minute'
@r=5
如何在查询中使用它们,使其形成以下内容:
select CURRENT_TIME - interval 5 minute;
我尝试了以下方法,但它不起作用:
select CURRENT_TIME - interval @r @q;
【问题讨论】:
标签: mysql sql phpmyadmin mariadb
如果我有以下变量:
@q='minute'
@r=5
如何在查询中使用它们,使其形成以下内容:
select CURRENT_TIME - interval 5 minute;
我尝试了以下方法,但它不起作用:
select CURRENT_TIME - interval @r @q;
【问题讨论】:
标签: mysql sql phpmyadmin mariadb
您必须使用准备好的语句来创建这样的动态查询:
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将包含时间计算的结果。
更新:准备好的语句在触发器上不可用,但如果@q 变量只有minute 和hour,您可以使用标准的case when 语句:
-- 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 将包含时间计算的结果。
【讨论】:
@q 变量的所有变体是什么?