时间间隔函数INTERVAL如何传参数

[复制链接]
查看11 | 回复3 | 2009-9-27 10:21:21 | 显示全部楼层 |阅读模式
我要求某个时间提前某个小时后的时间,过程如下:
PROCEDURE GET_DATE(P_ASM_CUR_START_DATE DATE,

P_ADJUST_TIMENUMBER,

P_NEW_DATE OUT DATE) IS
V_NEW_DATE DATE;
BEGIN
SELECT P_ASM_CUR_START_DATE - INTERVAL '&P_ADJUST_TIME' HOUR INTO P_NEW_DATE
FROM DUAL;
END;
可是P_ADJUST_TIME这个参数怎么写?
回复

使用道具 举报

千问 | 2009-9-27 10:21:21 | 显示全部楼层
过程中不能用替换变量
sql语句是可以的
SQL> select sysdate - INTERVAL '&P_ADJUST_TIME' HOUR from dual;
Enter value for p_adjust_time: 24
old 1: select sysdate - INTERVAL '&P_ADJUST_TIME' HOUR from dual
new 1: select sysdate - INTERVAL '24' HOUR from dual
SYSDATE-INTERV
--------------
25-9月 -09
Elapsed: 00:00:00.01
回复

使用道具 举报

千问 | 2009-9-27 10:21:21 | 显示全部楼层
SQL> var x number;
SQL> exec :x:=24;
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.40

SQL> select sysdate - numtodsinterval(:x ,'HOUR') from dual;
SYSDATE-NUMTOD
--------------
25-9月 -09
Elapsed: 00:00:00.01
回复

使用道具 举报

千问 | 2009-9-27 10:21:21 | 显示全部楼层
如果只是DATE类型,用P_ASM_CUR_START_DATE - P_ADJUST_TIME/24 就行了.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行