C# CSV到SQL-向数据列中的日期添加1天

C# CSV到SQL-向数据列中的日期添加1天,c#,csv,datetime,sqlbulkcopy,datacolumn,C#,Csv,Datetime,Sqlbulkcopy,Datacolumn,我正在尝试为某个数据列['RecordAddedDate'中的所有日期添加1天 csvData.Columns.AddRange(new DataColumn[3] { new DataColumn("Manufacturer", typeof(string)), new DataColumn("SupplierCode", typeof(string)), new DataColumn("RecordAddedDate", typeof(DateTim

我正在尝试为某个数据列['RecordAddedDate'中的所有日期添加1天

csvData.Columns.AddRange(new DataColumn[3] {                     
new DataColumn("Manufacturer", typeof(string)),
new DataColumn("SupplierCode", typeof(string)),
new DataColumn("RecordAddedDate", typeof(DateTime))});
目前,我正在工作:

for (int rowIndex = 0; rowIndex < csvData.Rows.Count; rowIndex++)
{
DateTime dt2 = DateTime.Parse(fieldData[2]);
var newDate = dt2.AddDays(1);
csvData.Rows[rowIndex][2] = newDate;                                    
}
for(int-rowIndex=0;rowIndex
但它只在从csv读取的第一行中添加了1天,其余的不添加

有什么帮助吗

下面是while循环,它从csv读取数据并添加数据

 while (!csvReader.EndOfData)
                {
                    string[] fieldData = csvReader.ReadFields();
                    //Making empty value as null
                    for (int i = 0; i < fieldData.Length; i++)
                    {
                        Console.WriteLine(fieldData[i]);
                        if (fieldData[i] == "")
                        {
                            fieldData[i] = null;
                        }

                        for (int rowIndex = 0; rowIndex < csvData.Rows.Count; rowIndex++)
                        {
                            DateTime dt2 = csvData.Rows[rowIndex].Field<DateTime>(2);
                            DateTime newDate = dt2.AddDays(1);
                            csvData.Rows[rowIndex][2] = newDate;
                        }                             

                    }
                    csvData.Rows.Add(fieldData);
                    Console.WriteLine("Rows count:" + csvData.Rows.Count);
                }
            }
        return csvData;
while(!csvReader.EndOfData)
{
字符串[]fieldData=csvReader.ReadFields();
//将空值设为null
for(int i=0;i
什么是
字段数据[2]
?您总是在循环中使用它,所以难怪您总是得到相同的
DateTime
。如果表已填充,并且您希望更新值,请使用
csvData.Rows[rowIndex][2]=csvData.Rows[rowIndex].Field(2).AddDays(1)

for(int-rowIndex=0;rowIndex
这里的
字段数据是什么?您不应该从
csvData.Rows[rowIndex][2]
开始吗?csvData是数据表。我现在将行索引编辑为较小的整数,因为它是一个大表,我不想在本文中全部添加。为什么不使用SSIS将数据从CSV移动到Excel?它支持从Excel导入和自定义操作(如果需要)。我询问了
fieldData
,这是用来获取初始值的。一个简短但完整的程序来演示这个问题会让你更容易得到帮助。对不起,我错过了阅读。fieldData是从csv输入阵列的行数据。我也更新了我原来的帖子。嗨,蒂姆,谢谢你的回复。不幸的是,它仍然只在第一行的“RecordAddedDate”中添加了1天,而没有在其余的行中添加。你认为这应该是一个while循环吗?@teaanywhere:只有当表只包含一行时才可能是这样。for循环非常适合此任务。Im 100%共有2行。当我从
Console.WriteLine(“行计数:+csvData.Rows.count”)接收到2时----这就是问题所在吗
DateTime dt2=DateTime.Parse(fieldData[2])
我相信
fieldData[2]
只引用第一行值,而不是第二行值。还有什么方法可以引用和解析一列数据吗?@teany:什么是
fieldData
?然而,它永远不会改变,我在回答中提到了这一点。你为什么没用我的密码?看来你根本没有理会我的回答。使用
csvData.Rows[rowIndex].Field(2)
获取每行的
RecordAddedDate
。然后添加一天,并将其写回单元格值。
for (int rowIndex = 0; rowIndex < csvData.Rows.Count; rowIndex++)
{
    DateTime dt2 = csvData.Rows[rowIndex].Field<DateTime>(2);
    DateTime newDate = dt2.AddDays(1);
    csvData.Rows[rowIndex][2] = newDate;                                    
}