如何在oracle数据库表中存储双冒号值
Posted
技术标签:
【中文标题】如何在oracle数据库表中存储双冒号值【英文标题】:how to store double colon values in oracle database table 【发布时间】:2021-11-01 21:50:24 【问题描述】:我有 excel
我正在尝试将其导入 oracle 数据库表中。
excel 中的某些值由例如14:39.5
和双冒号组成。我应该在 oracle 数据库表中提供什么数据类型来存储这个值?
目前已给出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'
【问题讨论】:
您说“当前已给出 varchar 数据类型”,但错误提示您将其声明为 NUMBER。那么它是哪一个?我建议您首先更新您的问题以显示表格的 DDL。并准确解释“14:39.5”实际代表什么。它应该是一天中的某个时间吗?过去的时间?完全不同的东西? 【参考方案1】:您可以将其存储为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小提琴here
【讨论】:
【参考方案2】:如果它是日期/时间戳的一部分,那么您可以将其存储为DATE
或TIMESTAMP
(如果您可以添加日期组件)。 Oracle 不仅有 TIME
数据类型。
如果您无法向其中添加日期组件,那么假设它是一个时间间隔,您可以将其转换为秒或微秒(去掉冒号)并将其存储为 NUMBER
。
如果您想保持显示的准确格式,您唯一的选择是使用 VARCHAR2
或类似的东西将其存储为文本。
【讨论】:
以上是关于如何在oracle数据库表中存储双冒号值的主要内容,如果未能解决你的问题,请参考以下文章