我有这个问题:
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 < - 那个数字
在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"/>
SELECT * FROM records WHERE `serial` LIKE '%19-111117-11%';
不起作用但是:
SELECT col1, col2, col3... FROM records WHERE `serial` LIKE '%19-111117-11%';
作品。