此查询根据给定的间隔时间10返回值.
SELECT TO_CHAR((TO_DATE('23:20:20','HH24:MI:SS') - INTERVAL '10' MINUTE), 'HH24:MI:SS')
FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
输出:
23:10:20
Run Code Online (Sandbox Code Playgroud)
我想使用下面的代码通过变量传递这个分钟间隔:
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;
Run Code Online (Sandbox Code Playgroud)
但它不起作用 - 错误是
PL/SQL:ORA-00904:"MINUTE":标识符无效
请帮助我.谢谢!
你必须使用- NUMTODSINTERVAL( test1, 'MINUTE' )
所以你的说法是。
SELECT TO_CHAR((TO_DATE('23:20:20','HH24:MI:SS') - NUMTODSINTERVAL( test1, 'MINUTE' )), 'HH24:MI:SS' )
FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
你不能这样做,因为它必须是一个字符串文字,而不是一个变量.但您可以使用该numtodsinterval()功能:
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;
/
Run Code Online (Sandbox Code Playgroud)
SQL Fiddle,包括一个非常简单的函数版本.
尝试这个:
DECLARE
l_val NUMBER;
l_result VARCHAR2( 20 );
BEGIN
l_val := 10;
SELECT TO_CHAR( ( TO_DATE( '23:20:20', 'HH24:MI:SS' ) - INTERVAL '1' MINUTE * l_val ), 'HH24:MI:SS' ) INTO l_result FROM DUAL;
DBMS_OUTPUT.put_line( l_result );
END;
Run Code Online (Sandbox Code Playgroud)
输出将是:
23 : 10 : 20
| 归档时间: |
|
| 查看次数: |
7714 次 |
| 最近记录: |