从c#Windows应用程序中的csv文件中读取字符串作为日期

时间:2016-09-01 07:29:42

标签: c# sql windows winforms

我正在将CSV文件导出到数据表中。出口工作正常。使用的提供程序是Microsoft.ACE.OLEDB.12.0

问题是我有一个日期列,其中包含字符串中的日期以及单个小数,我删除了单引号,日期格式如下:“2015-05-02 12:57:43.888”

我需要将此日期转换为dd / MM / yyy格式。

我尝试使用转换功能,但它显示错误

  

未定义的函数转换为表达式

由于我需要根据日期过滤csv文件,我需要从csv本身转换日期。

我的代码如下:

string header = isFirstRowHeader ? "Yes" : "No";

string pathOnly = Path.GetDirectoryName(path);
string fileName = Path.GetFileName(path);

string sql = @"Select * From " +
    " (SELECT ['TRANSACT'] AS InvNo,['TIMESTART'] AS InvDate,['STATUS'] AS InvStatus,['NETTOTAL'] AS InvNet ,['FINALTOTAL'] " +
    " AS InvFinal,REPLACE(['TIMESTART'],'''','') as TIMESTART FROM [" + fileName + "]) Table1 " +
    " WHERE convert(varchar(10),TIMESTART,103) between '" + strFrom + "' and '" + strTo + "'";

using (OleDbConnection connection = new OleDbConnection(
          @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pathOnly +
          ";Extended Properties=\"Text;HDR=" + header + "\""))
using (OleDbCommand command = new OleDbCommand(sql, connection))
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
    adapter.Fill(dataTable);
}

2 个答案:

答案 0 :(得分:0)

尝试使用此代码:

var sDate = "2015-05-02 12:57:43.888";
DateTime date = new DateTime();
DateTime.TryParse(sDate, out date);
Console.WriteLine(date.ToString("dd/MM/yyyy"));

或者看看.NET Fiddle

答案 1 :(得分:0)

我找到了答案。 由于我使用Microsoft.ACE.OLEDB驱动程序通过Provider = Microsoft.ACE.OLEDB.12.0加载csv表,我必须使用MS Access中可用的查询格式和功能。