如何在 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 邮票的一部分,那么您可以将其存储为 DATE
或 TIMESTAMP
如果您可以添加日期组件。 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
我有 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 邮票的一部分,那么您可以将其存储为 DATE
或 TIMESTAMP
如果您可以添加日期组件。 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