希望有人能帮我。
Oracle版本:19.3.0
CREATE TABLE test
(
DATE_STAMP DATE,
TIMESTAMP TIMESTAMP(6)
)
CSV格式的示例数据如下
cat test.csv
2007/05/13,16:35:24
2007/05/13,18:00:51
控制文件:
OPTIONS(skip=1)
LOAD DATA
INFILE 'test.csv'
BADFILE 'test.bad'
INSERT INTO TABLE test
FIELDS TERMINATED BY ','
(
date_stamp,
timestamp TIMESTAMP "HH24:MI:SS.FF2"
)
虽然数据已加载到表中,但格式不正确。
实际结果:
从测试中选择DATE_STAMP、TIMESTAMP;
2023年5月13日9月1日4:35:24.000000 PM
2023年5月7日9月1日6:00:51.000000 PM
注意:由于某种原因,“9/1/2023”被自动添加到TIMESTAMP列。
预期结果:
2007年5月13日下午4:35:24.000000
2007年5月13日下午6:00:51.000000
先谢了。
罗杰7942
1条答案
按热度按时间hxzsmxv21#
看来你搞错了
时间戳数据类型-在Oracle中-包含日期和时间组件,而不仅仅是时间。
Data Types documentation(search for“timestamp”)说道:
date的年、月、日值,以及时间的小时、分钟、秒值**,其中fractional_seconds_precision是SECOND datetime字段小数部分的位数。
换句话说,这类似于不包含小数秒的
date
数据类型。如果不指定日期(在将字符串转换为时间戳时),Oracle会将其设置为 * 当前月份的第一个 *:
(今天是2023年9月14日)
当你将时间戳值存储到一个表中时,你可以选择以不同的方式显示它,例如:仅日期组件或仅时间组件,可以使用任何格式。举例来说:
如果你坚持只存储时间戳值,你将不得不使用
varchar2
数据类型并将值存储为字符串,这是你可能做的坏事之一。不要将日期/时间戳值存储到适当的数据库之外的任何地方。将它们存储为字符串迟早会导致问题。