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

时间:2019-12-02 13:08:40

标签: sql oracle ddl calculated-columns

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分: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