将派生属性添加到SQL Developer中的现有表中

问题描述 投票:0回答:2

是否有任何方法可以将派生的日期/时间列(添加到现有表中)来保存比赛中计算出的运行时间。

这些值以小时为单位,四舍五入到两位小数。该表中有2列开始时间和结束时间。以下是我尝试过的最后一个缺少表达式错误的信息。

ALTER TABLE race
ADD race_time AS (SELECT ROUND(DATEDIFF (endtime, starttime),2)FROM race);
sql oracle ddl calculated-columns
2个回答
2
投票

Oracle中没有datediff()函数,并且您也不需要SELECT语句来创建计算列:

ALTER TABLE race
  ADD race_time AS (endtime - starttime);

如果endtimestarttime被定义为timestamp,则race_time列将为interval类型。

如果这两列是date列,结果将是代表两天之间的天数的数字


0
投票

自从我使用此功能已有一段时间,但我认为它看起来更像是:

ALTER TABLE race
ADD race_time AS (ROUND(DATEDIFF (endtime, starttime),2))

[注意,我不知道Oracle中的DATEDIFF函数-如果您自己尚未编写此函数,并且希望获取两个日期之间的小时数,它会更像是:

ALTER TABLE race
ADD race_time AS (ROUND((endtime - starttime)*24.0,2))

如果您的列是时间戳记,则在进行数学运算时将它们转换为日期可能会更容易

https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=3ac1f46f8d7296754d14a3de6191dbe8

© www.soinside.com 2019 - 2024. All rights reserved.