【问题标题】:How can I sum current system time with integer value as minutes?如何将当前系统时间与整数值相加为分钟?
【发布时间】:2013-08-24 08:58:27
【问题描述】:

我想为会话超时创建注销时间

我创建了一个具有 2 个输入和 1 个输出参数的过程

一个输入值是“系统时间”,另一个值是声明为“分钟”的数字

这是我的查询,但有问题并显示此错误:

ORA-00907:缺少右括号
00907. 00000 - “缺少右括号”

SQL:

SELECT to_char((to_date(sysdate,'HH24:MI:SS') + INTERVAL 40 MINUTE,'HH24:MI:SS') 
FROM dual;

【问题讨论】:

    标签: plsql oracle11g oracle-sqldeveloper


    【解决方案1】:
    1. sysdate返回日期数据类型的值,所以不需要 使用将sysdate 显式转换为日期数据类型 to_date() 函数。

    2. 如果您只想在 sysdate 返回的值上增加几分钟,也无需使用 to_char() 函数。

    3. INTERVAL 40 MINUTE 构造中的分钟文字必须用单引号括起来:INTERVAL '40' MINUTE

    话虽如此,您可以按如下方式重写您的查询:

    SELECT sysdate + INTERVAL '40' MINUTE
      FROM dual;
    

    在过程中,因为不能在INTERVAL <<variable>> MINUTE 构造中包含变量,所以可以使用numtodsinterval() 函数。

    此外,为了消除不必要的上下文切换,您可以在不查询dual 表的情况下进行所有计算:

    p_out_parameter := p_input_date + numtodsinterval(p_input_time, 'minute');  
    

    【讨论】:

      【解决方案2】:

      您是在问如何在日期上添加分钟数?

      select sysdate + number_of_minutes/(24*60) from dual;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-10
        • 1970-01-01
        • 2021-03-14
        • 2012-08-14
        • 1970-01-01
        • 2015-12-31
        • 1970-01-01
        • 2017-03-28
        相关资源
        最近更新 更多