C# 在Oracle中插入日期时交换年份和世纪
我在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;
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中的日期不同的时间戳。