Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Oracle中运行应用程序时,将DateTime字段更改为时间戳字段_C#_Oracle_Datetime_Odp.net - Fatal编程技术网

C# 在Oracle中运行应用程序时,将DateTime字段更改为时间戳字段

C# 在Oracle中运行应用程序时,将DateTime字段更改为时间戳字段,c#,oracle,datetime,odp.net,C#,Oracle,Datetime,Odp.net,我正在使用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

我正在使用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

等等

问题是,当应用程序正在运行且DDL正在运行时,大量插入的字段会失去它们的时间部分。他们变得有点像

2016-03-07 00:00:00.000

也就是说,当字段为date且应用程序正在运行时,则当运行以下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

在应用程序运行时执行
altertable…
语句?这看起来不太聪明,你应该修改你的数据库,分别。应用程序设计。问题是我们无法停止应用程序,它正在被积极使用。但是我们需要毫秒值,Oracle日期列不包含毫秒。如果重新启动应用程序,没有问题。
表中日期列的.net数据类型是什么?它是被截断的还是用日期/时间填充的?它是一个带有毫秒值的.Net日期时间,并且被填充。我们用一个新启动的应用程序对其进行了测试。那么,再次阅读您的问题,您是在执行批量插入,然后将列类型更改为时间戳?这将不起作用,因为如果源列是没有时间的日期,则转换该列无法从无数据创建时间。另外,仅供参考,我有一个带有日期列的oracle表,该列显示时间?