我正在使用Oracle 11(64位)和Oracle.DataAccess(ODP.NET)4.1。
我有一张带日期字段的表格;
create table x (..., y date, ...);
此应用程序批量插入此表;
var bulkCopy = new OracleBulkCopy(connection) { DestinationTableName = "x" };
bulkCopy.WriteToServer(table);
当我按照DDL运行时;
ALTER TABLE x MODIFY (y timestamp );
然后启动应用程序然后一切就绪并且正确填充时间戳字段(我们可以在字段值中看到分钟,秒和毫秒);
2016-03-07 06:04:34.456
等
问题是当aplication正在运行并运行DDL时,批量插入的字段会丢失它们的时间部分。他们变得像
2016-03-07 00:00:00.000
。
含义,当字段为日期且应用程序正在运行时,则运行以下DDL时;
ALTER TABLE x MODIFY (y timestamp );
所有新插入的字段都会丢失它们的时间部分。
为什么你认为它的行为如此?
注意:Oracle返回以下版本文本;
select * from v$version;
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE 11.2.0.4.0 Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production