首页 > 解决方案 > '无法将 MySQL 日期/时间值转换为 System.DateTime' 不使用日期 - C#.Net

问题描述

我有这个查询:

SELECT * FROM records WHERE serial LIKE '%19-111117-11%';

串行列是一个 varchar 字段。这里没有日期/时间。也许 .Net 或 MySQL 认为“19-111117-11”是一个日期?

我收到此错误:

MySql.Data.Types.MySqlConversionException:'无法将 MySQL 日期/时间值转换为 System.DateTime'

奇怪的是,这个查询在 MySql 查询浏览器中运行良好,但在我的 C# 应用程序中运行时会抛出该异常。

我试过了:

SELECT * FROM records WHERE CAST(serial as char) LIKE '%19-111117-11%';

只是为了它,我把'19-111117-11'分成两部分,如下所示:

(有点伪代码,因为之后我尝试了更多的东西)

string p1 = serial.substring(0, serial.length/2)
string p2 = serial.substring(serial.length)

string query = "SELECT * FROM records WHERE SUBSTRING(serial,0,LENGTH(serial)/2) = " + p1 + "' AND  SUBSTRING(serial,LENGTH(serial)/2,LENGTH(serial)/2) = '" + p2 + "';";

请帮忙!这么烦人的问题。我不确定为什么会转换为日期/时间异常。我根本不使用日期...

编辑:

SELECT * FROM records WHERE `serial` LIKE '%19-111117-11%';

此外,不起作用。我不认为它与 C# 代码有关,因为它只是一个查询并且是 MySQL 异常,但这里是使用的代码:

string serial = "19-111117-11";
DataTable tracking_info = MySqlGetDataTable("SELECT * FROM records WHERE `serial` LIKE '%" + serial + "%';");

调用的是这个函数:

public static DataTable MySqlGetDataTable(string query, string connString = "default")
{       
    var data = new DataTable();
    using (var conn = new MySqlConnection(connString == "default" ? Program.CidDataConnectionString : connString))
    {
        var adapter = new MySqlDataAdapter(query, conn);
        adapter.Fill(data);
    }

    return data;
}

编辑2:

使用以下序列号:19-111115-11、19-111116-11、19-111118-11 都可以工作……只是 19-111117-11 不工作。它似乎与:

19-11111 7 -11 <- 那个数字

标签: c#mysql

解决方案


在应用程序配置文件中设置“零日期时间=真”

<add name="CONNECTIONSTRINGNAME" connectionString="server's HOSTNAMEorIP(i.e Localhost or IP address);user id=USER_ID;Pwd=PASSWORD;persistsecurityinfo=True;database=DATABASENAME;Convert Zero Datetime=True" providerName="MySql.Data.MySqlClient"/>

推荐阅读