我正在将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);
}
答案 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中可用的查询格式和功能。