SQL触发器计算时间戳的差异

时间:2016-05-05 02:24:07

标签: sql oracle triggers timestamp

我似乎无法找到计算时差的解决方案,使用触发器在插入两个时间戳时自动生成持续时间到我的表中。

这是我的表'呼叫':

*BarGraph

我正在尝试使用触发器

create table call(
    id varchar(5),
    start_time timestamp,
    end_time timestamp,
    duration INTERVAL DAY(3) TO SECOND (4),
    primary key(id));

我希望像这样插入可以正常工作

create sequence time_diff;

CREATE OR REPLACE TRIGGER DURATION 
BEFORE INSERT ON call
for each row
BEGIN
begin select time_diff //confused and don't know what to do
END;

我的时间戳格式为'YYYY-MM-DD HH24:MI:SS';

1 个答案:

答案 0 :(得分:1)

一些事项:首先,为什么要存储计算出的数字?违反正常形式。至少,将其设为虚拟列。其次,你不能输入这样的时间戳;使用正确的时间戳语法。 (如果你不知道它是什么,请输入" Oracle时间戳文字"在谷歌。)第三,你的问题是如何计算两个时间戳之间的差异,以秒为单位?时间戳之间的差异是"间隔天到秒&#34 ;;你可以从中提取日,小时,分钟和秒(单独),并将所有内容转换为秒。如同tsdiff := timestamp_1 - timestamp_2,然后diff_seconds := extract (day from tsdiff) * 86400 + extract(hour from tsdiff) * 3600 + ...