添加两个小时到时间戳
Add two hours to timestamp
我有一个触发器,当插入前该字段为空时,它必须将时间戳设置为当前时间加上两个小时。到目前为止我尝试过的陈述之一是
IF :new.time_to_live IS NULL THEN
:new.time_to_live := sysdate + INTERVAL '0 02:00:00.0' HOUR TO MINUTE;
END IF;
但我在第二行收到 PLS-00166 错误(日期、时间、时间戳或间隔文字的格式错误)。还在多个论坛中将其修改为几个建议,但错误仍然存在。列创建如下:
time_to_live timestamp(0) NOT NULL
您需要更改 HOUR TO MINUTE
以匹配您实际传递的值:
sysdate + INTERVAL '0 02:00:00.0' DAY TO SECOND
您可能还想使用 systimestamp
而不是 sysdate
。如果您总是恰好添加两个小时,您也可以使用更短的间隔文字:
systimestamp + INTERVAL '02:00' HOUR TO MINUTE
或者只是
systimestamp + INTERVAL '2' HOUR
快速演示:
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
另外interval
真的很方便,我经常这样写:
IF :new.time_to_live IS NULL THEN
:new.time_to_live := sysdate + 2 / 24.0
END IF;
日期加上一个整数被视为天数。 "2 / 24" 是两个小时。
我有一个触发器,当插入前该字段为空时,它必须将时间戳设置为当前时间加上两个小时。到目前为止我尝试过的陈述之一是
IF :new.time_to_live IS NULL THEN
:new.time_to_live := sysdate + INTERVAL '0 02:00:00.0' HOUR TO MINUTE;
END IF;
但我在第二行收到 PLS-00166 错误(日期、时间、时间戳或间隔文字的格式错误)。还在多个论坛中将其修改为几个建议,但错误仍然存在。列创建如下:
time_to_live timestamp(0) NOT NULL
您需要更改 HOUR TO MINUTE
以匹配您实际传递的值:
sysdate + INTERVAL '0 02:00:00.0' DAY TO SECOND
您可能还想使用 systimestamp
而不是 sysdate
。如果您总是恰好添加两个小时,您也可以使用更短的间隔文字:
systimestamp + INTERVAL '02:00' HOUR TO MINUTE
或者只是
systimestamp + INTERVAL '2' HOUR
快速演示:
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
另外interval
真的很方便,我经常这样写:
IF :new.time_to_live IS NULL THEN
:new.time_to_live := sysdate + 2 / 24.0
END IF;
日期加上一个整数被视为天数。 "2 / 24" 是两个小时。