我有一个名为reference的表,其中包含列time(timestamp),并调整存储varchar seconds值的值:10、13、55。。等
我想使用字段adjust来增加时间值,同时确保adjust值转换为秒而不是分钟或其他单位,例如:
SELECT
TIME AS START,
TIME + ADJUST AS END
FROM REFERENCE;
怎么说呢?我尝试过使用interval,但它只适用于显式值,例如:
TIME + INTERVAL '13' SECOND AS END
2条答案
按热度按时间thtygnil1#
你可以用
numToDSInterval()
:将字符串显式转换为数字可能更简洁:
如果
adjust
始终属于范围00-59
,也可以使用to_dsinterval()
:gc0ot86w2#
秒应存储为
number
,为什么varchar
(或可能)varchar2
)?除此之外,诀窍是获取一个间隔文字(这确实需要硬编码字符串)并对其使用算术运算。
那么,假设
time
以及adjust
是你的专栏;time
是时间戳数据类型,并且adjust
是数字,以秒为单位(如果它是字符串,您可以将它显式地转换为数字,方法是将它 Package 在to_number()
; 我不说了,因为adjust
应该是真的number
以数据类型开头。)然后你可以这样做:
在这里
adjust
可以是300,就像你在gmb的答案下给出的例子。