导入MySQL时格式化DateTable日期列

时间:2016-01-12 10:16:58

标签: c# mysql date csv filehelpers

我目前正在使用FileHelpers包将DataTable信息导入我的MySQL数据库。运行我的程序后,数据库中的数据如下所示;

enter image description here

MySQL列的格式为DATETIME。这些是我目前使用的方法,你可以看到我已经尝试正确格式化列;

联系人

    private void Contacts()
    {
        try {
            using (OleDbConnection dbfCon = new OleDbConnection(dbfConstr))
            {
                dbfCon.Open();
                var dbfCmd = new OleDbCommand(@"SELECT ct_id, ct_cmpid, ct_empid,
                ct_pplid, ct_cntid, ct_pplnm, ct_date, ct_time, ct_type, ct_doneby, ct_desc
                FROM contacts", dbfCon);
                var dTable = new DataTable();
                var dataAdapter = new OleDbDataAdapter(dbfCmd);
                dataAdapter.Fill(dTable);
                WriteDateTimeToCSV(dTable, "contacts");
            }
        }
        catch (OleDbException ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

WriteDateTimeToCSV

此方法只是简化数据,然后使用其余的数据;

    public void WriteDateTimeToCSV(DataTable dataTable, string mySqlTable)
    {
        var sb = new StringBuilder();

        // Trim the DataTable
        dataTable.AsEnumerable().ToList()
        .ForEach(row =>
        {
            var cellList = row.ItemArray.ToList();
            row.ItemArray = cellList.Select(x => x.ToString().Trim()).ToArray();
        });

        foreach (DataRow row in dataTable.Rows)
        {   
            // Used to remove carriage returns
            if (row[10].ToString().Contains("\r\n"))
            {
                row[10] = row[10].ToString().Replace("\r\n", "*?*!");
            }
        CommonEngine.DataTableToCsv(dataTable, @"C:\Users\DanD\Desktop\filehelpers.csv", '|');
        WriteToMySQL(mySqlTable);
    }

将DataTable写入CSV。在CSV格式中,日期格式看起来像dd MM YYYY,在任何日/月/年之间没有-。我相信这就是混淆MySQL数据库格式的原因。

之前我对FileHelpers没有多少经验,是不是导致格式错误的包?

编辑:我尝试过使用此功能;

row[6] = ((DateTime)row[6]).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)

但是当我打印row[6]时,我仍然遇到完全相同的问题。

1 个答案:

答案 0 :(得分:0)

试试这个((DateTime)row[6]).ToString("yyyy.MM.dd")