如何在 oracle 数据库中存储双冒号值 table

how to store double colon values in oracle database table

我有 excel,我正在尝试将其导入 oracle 数据库 table。

excel 中的某些值由例如 14:39.5 和双冒号组成。我应该提供 oracle 数据库中的什么数据类型 table 来存储此值?

目前已给定 varchar 数据类型,并且在导入期间抛出错误:

Conversion error! Value: "00:12:01.615518000" to data type: "Number". Row ignored! Value is '00:12:01.615518000'. Cannot be converted to a decimal number object. Valid format: 'Unformatted'

如果它是 date/time 邮票的一部分,那么您可以将其存储为 DATETIMESTAMP 如果您可以添加日期组件。 Oracle 不只有 TIME 数据类型。

如果您不能向其添加日期组件,那么假设它是一个时间间隔,您可以将其转换为秒或微秒(去掉冒号)并将其存储为 NUMBER

如果您想保持所示的格式,唯一的选择是使用 VARCHAR2 或类似的方法将其存储为文本。

您可以将其存储为 INTERVAL DAY(0) TO SECOND(9) 数据类型:

CREATE TABLE table_name (
  time INTERVAL DAY(0) TO SECOND(9)
);

然后你可以使用 TO_DSINTERVAL 将你的值与 '0 ' 放在开头:

INSERT INTO table_name (time)
VALUES ( TO_DSINTERVAL('0 ' || '00:12:01.615518000') );

db<>fiddle here