'无法将MySQL日期/时间值转换为System.DateTime'当不使用日期时 - C#.Net

问题描述 投票:0回答:2

我有这个问题:

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

serial列是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-111117-11 < - 那个数字

c# mysql
2个回答
2
投票

在app配置文件中设置'Zero Datetime = True'

<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"/>

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

不起作用但是:

SELECT col1, col2, col3... FROM records WHERE `serial` LIKE '%19-111117-11%';

作品。

© www.soinside.com 2019 - 2024. All rights reserved.