gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:35 25 4
gpt4 key购买 nike

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

现在的问题是当我在 Toad 中检查我的 oracle 表时,第一列显示 10/08/1320 并且显然 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_timestamp 而不是 to_date 解决了这个问题...

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 Insert...

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

关于c# - 将 c# datetime 插入 oracle 表时出现日期格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19533678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com