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

本文关键字:字符串 读取 日期 文件 csv Windows 应用程序 | 更新日期: 2023-09-27 18:05:01

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

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

我需要把这个日期转换成年月日的格式。

我尝试使用转换函数,但它显示错误

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

由于我需要根据日期过滤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);
}

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

试试下面的代码:

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

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