首页 > 解决方案 > 将新属性插入到根据 Oracle 中两列之间的分钟差计算的表的列中

问题描述

需要帮助解决以下问题:

Run Monash 已经决定,他们希望将特定赛事中跑步者的经过时间(完成时间 - 开始时间)存储为系统的一部分,而不是每次需要时都计算它。添加一个新属性,该属性将记录跑步者在事件中经过的时间。时间应存储为经过的分钟数,保留两位小数,例如。26.12 该属性必须根据当前存储在系统中的数据初始化为正确的经过时间。您应该注意,系统可能包含当前没有开始或结束时间的未来事件的注册。

插入条目表的示例是

INSERT INTO entry(entrystarttime,entryfinishtime) 
VALUES (TO_DATE('01-feb-2018:10:00:00 AM', 'dd-mon-yyyy:hh:mi:ss am'),
    TO_DATE('01-feb-2018:10:59:30 AM', 'dd-mon-yyyy:hh:mi:ss am');

两列的数据类型都是日期,所以表格看起来像这样

ENTRYSTARTTIME  ENTRYFINISHTIME
--------------  ---------------
01/FEB/2018     01/FEB/2018

这就是我试图向表中添加一个名为 entryelapsedtime 的新属性

alter table entry add (entryelapsedtime number(7,2) DEFAULT 0 NOT NULL);
UPDATE entry
SET
  entryelapsedtime = (entryfinishtime - entrystarttime) * 24 * 60, 2
SELECT * from entry;

但是这不起作用,因此我需要帮助编写此修改,所以我得到一个看起来像这样的表:

ENTRYSTARTTIME  ENTRYFINISHTIME  ENTRYELAPSEDTIME
--------------  ---------------  --------------
01/FEB/2018      01/FEB/2018        59.5

标签: sqloracle

解决方案


这不行吗?

UPDATE entry
    SET entryelapsedtime = (entryfinishtime - entrystarttime) * 24 * 60;

我不确定, 2应该做什么。


推荐阅读