此查询根据给定的间隔时间10返回值.
SELECT TO_CHAR((TO_DATE('23:20:20','HH24:MI:SS') - INTERVAL '10' MINUTE),'HH24:MI:SS') FROM DUAL;
输出:
23:10:20
我想使用下面的代码通过变量传递这个分钟间隔:
declare test1 varchar(30); begin test1:=18; SELECT TO_CHAR((TO_DATE('23:20:20','HH24:MI:SS') - INTERVAL ||test1|| MINUTE),'HH24:MI:SS') FROM DUAL; end;
但它不起作用 – 错误是
PL/sql: ORA-00904: “MINUTE”: invalid identifier
请帮助我.谢谢!
解决方法
你不能这样做,因为它必须是一个字符串文字,而不是一个变量.但你可以使用
the
numtodsinterval()
function代替:
declare test1 number; begin test1:=18; SELECT TO_CHAR(TO_DATE('23:20:20','HH24:MI:SS') - NUMTODSINTERVAL(test1,'MINUTE'),'HH24:MI:SS') INTO <something> FROM DUAL; end; /
SQL Fiddle,包括一个非常简单的功能版本.