C# CSV到SQL-向数据列中的日期添加1天
我正在尝试为某个数据列['RecordAddedDate'中的所有日期添加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
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;
}