将c#datetime插入oracle表时出现日期格式问题

将c#datetime插入oracle表时出现日期格式问题,c#,oracle,date,datetime,datatable,C#,Oracle,Date,Datetime,Datatable,我有一个csv文件,我需要再添加一列(截止日期),并使用c#将它们保存到oracle表中。我所做的是向Datatable添加数据,并使用OracleBulkCopy将所有数据插入db表 现在的问题是,当我在Toad中检查我的oracle表时,第一列显示的是1320年8月10日,显然oracle无法存储早于1900年的日期。当我从Toad中单击字段时,它告诉我“指定的日期超出了支持的日期范围…” 下面是我尝试过的其他三种解决方案,它们都有相同的问题 using Oracle.DataAcccess

我有一个csv文件,我需要再添加一列(截止日期),并使用c#将它们保存到oracle表中。我所做的是向Datatable添加数据,并使用OracleBulkCopy将所有数据插入db表

现在的问题是,当我在Toad中检查我的oracle表时,第一列显示的是1320年8月10日,显然oracle无法存储早于1900年的日期。当我从Toad中单击字段时,它告诉我“指定的日期超出了支持的日期范围…”

下面是我尝试过的其他三种解决方案,它们都有相同的问题

using Oracle.DataAcccess.Client;

//Solution 1

DataTable dt = new DataTable();

dt.Columns.Add("Product_Date",typeof(DateTime));//The first column of my oracle table is Date
dt.Columns.Add(....);
 ...

//loop my csv file
DataRow dr = dt.NewRow();
dr[0] = new DateTime(2013,10,8);
dr[1] = ...;
...
dt.Rows.Add(dr)

OracleBulkCopy bc = new OracleBulkCopy(myConn);
bc.DestinationTableName = "TableName";
bc.WriteToServer(dt);

//Solution 2

DataTable dt = new DataTable();

dt.Columns.Add("Product_Date",typeof(OracleDate));//The first column of my oracle table is Date
dt.Columns.Add(....);
...

//loop my csv file
DataRow dr = dt.NewRow();
DateTime dtime = DateTime(2013,10,8);
dr[0] = new OracleDate(dtime);
dr[1] = ...;
...
dt.Rows.Add(dr)

OracleBulkCopy bc = new OracleBulkCopy(myConn);
bc.DestinationTableName = "TableName";
bc.WriteToServer(dt);

//Solution 3

DataTable dt = new DataTable();

dt.Columns.Add("Product_Date",typeof(string));//The first column of my oracle table is Date
dt.Columns.Add(....);
...

//loop my csv file
DataRow dr = dt.NewRow();
DateTime dtime = DateTime(2013,10,8);
dr[0] = dtime.ToString("ddMMMyy");
dr[1] = ...;
...
dt.Rows.Add(dr)

OracleBulkCopy bc = new OracleBulkCopy(myConn);
bc.DestinationTableName = "TableName";
bc.WriteToServer(dt);

我用to_时间戳而不是to_日期解决了这个问题

DateTime date = Convert.ToDateTime(txtTrainDate.Text);
DateTime time = Convert.ToDateTime(ddTrainTime.SelectedValue);
DateTime dtCOMPLTDTTM = new DateTime(date.Year, date.Month, date.Day, time.Hour, time.Minute, time.Second);
string strCOMPLTDTTM = dtCOMPLTDTTM.ToString("dd.MM.yyyy HH:mm:ss")
然后,在Oracle插入中

to_timestamp('" + strCOMPLTDTTM + "', 'DD.MM.YYYY hh24:mi:ss'),"