有什么方法可以添加派生的日期/时间列(到现有表中)来保存比赛的计算出的运行时间。
值以小时为单位,四舍五入到两位小数。该表中有2列开始时间和结束时间。以下是我尝试过的最后一个缺少表达式错误的信息。
ALTER TABLE race
ADD race_time AS (SELECT ROUND(DATEDIFF (endtime, starttime),2)FROM race);
答案 0 :(得分:2)
Oracle中没有datediff()
函数,并且您也不需要SELECT
语句来创建计算列:
ALTER TABLE race
ADD race_time AS (endtime - starttime);
如果将endtime
和starttime
定义为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