添加两个小时到时间戳

Mat*_*ück 2 sql oracle plsql timestamp intervals

我有一个触发器,必须将时间戳设置为当前时间加上插入前字段为空时的两个小时.我到目前为止所做的一个陈述是

IF :new.time_to_live IS NULL THEN
    :new.time_to_live := sysdate + INTERVAL '0 02:00:00.0' HOUR TO MINUTE;
END IF;
Run Code Online (Sandbox Code Playgroud)

但我得到第二行的PLS-00166错误(日期,时间,时间戳或间隔文字的格式错误).还修改了多个论坛中的几个建议,但错误仍然存​​在.该列创建如下:

time_to_live timestamp(0) NOT NULL
Run Code Online (Sandbox Code Playgroud)

Ale*_*ole 13

您需要更改您HOUR TO MINUTE的值以匹配您实际传递的值:

sysdate + INTERVAL '0 02:00:00.0' DAY TO SECOND
Run Code Online (Sandbox Code Playgroud)

您可能还想使用systimestamp而不是sysdate.如果你总是加上两个小时,你也可以使用更短的间隔文字:

systimestamp + INTERVAL '02:00' HOUR TO MINUTE
Run Code Online (Sandbox Code Playgroud)

要不就

systimestamp + INTERVAL '2' HOUR
Run Code Online (Sandbox Code Playgroud)

作为快速演示:

SELECT systimestamp, systimestamp + INTERVAL '2' HOUR FROM DUAL;

SYSTIMESTAMP                        SYSTIMESTAMP+INTERVAL'2'HOUR      
----------------------------------- -----------------------------------
11-MAY-15 11.15.22.235029000 +01:00 11-MAY-15 13.15.22.235029000 +01:00
Run Code Online (Sandbox Code Playgroud)