Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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中插入日期时交换年份和世纪_C#_Oracle_Odp.net - Fatal编程技术网

C# 在Oracle中插入日期时交换年份和世纪

C# 在Oracle中插入日期时交换年份和世纪,c#,oracle,odp.net,C#,Oracle,Odp.net,我在Oracle中有下表: create table tb_dates ( dt_date date ) 以及C中的以下代码: DataTable dt = new DataTable(); DataColumn dc = new DataColumn(); dc.DataType = Type.GetType("System.DateTime"); dc.ColumnName = "dt_date"; dt.Columns.Add(dc); for (int i = 0; i < 5;

我在Oracle中有下表:

create table tb_dates ( dt_date date )
以及C中的以下代码:

DataTable dt = new DataTable();
DataColumn dc = new DataColumn();
dc.DataType = Type.GetType("System.DateTime");
dc.ColumnName = "dt_date";
dt.Columns.Add(dc);
for (int i = 0; i < 5; i++)
{
    DataRow dr = dt.NewRow();
    dr["dt_date"] = System.DateTime.Now;
    dt.Rows.Add(dr);
}

using (OracleBulkCopy bulkCopy = new OracleBulkCopy("data source=orcl;user id=scott;password=tiger", OracleBulkCopyOptions.Default))
{
    bulkCopy.DestinationTableName = "tb_dates";
    bulkCopy.WriteToServer(dt);
}
表中的日期必须为2014/05/15。但是,当我在Oracle中进行选择时,我有1420/05/15。这一年发生了逆转


我正在使用Oracle 11g和Oracle ODP.NET 12客户端。要使此代码正常工作,我必须做些什么?

只是澄清一下,您正在将当前日期从C插入Oracle。然后选择日期时,直接在数据库上,而不是通过C,年份是不正确的?在C中,年份是正确的。问题是当我在bulkcopy之后检查数据库中表的值时。我试图在C中设置Oracle全球化:OracleGlobalization info=OracleGlobalization.GetClientInfo;info.TimeStampFormat=DD-MON-YYYY HH:MI:SS.FF AM;info.TimeStampTZFormat=DD-MON-YYYY HH:MI:SS.FF AM TZR;OracleGlobalization.SetThreadInfoinfo;但我得到了同样的结果。在我更改OracleGlobalization格式之前,年份的格式为RRinfo.DateFormat将控制日期格式,而info.TimeStampFormat和info.TimeStampTZFormat则用于与Oracle中的日期不同的时间戳。