这是我目前正在尝试的:
var value = Datepicker1.Value;
List<ChartData> data = new List<ChartData>();
string connetionString;
MySqlConnection cnn;
connetionString = “TAKEN OUT FOR SECURITY”;
cnn = new MySqlConnection(connetionString);
cnn.Open();
MySqlDataAdapter da = new MySqlDataAdapter("SELECT SUBSTRING(date_time,1,10), sum(Total), sum(Total_ly), AVG ((Total + Total_ly)/2) FROM Transaction WHERE Substring(date_time,1,10) LIKE '%@param1%' Group By date_time Having sum(Total)<>0; ", cnn);
da.SelectCommand.Parameters.AddWithValue("@param1", value);
DataTable table = new DataTable();
da.Fill(table);
所以,我要做的就是:WHERE Substring(date_time,1,10) like '%2/24/2019%'
那就是硬编码版本,我只需要将其存储在变量中,然后检查变量而不是硬编码字符串(如果这样)?
但是它不起作用!而且没有给出SQL异常!
任何帮助表示赞赏。
答案 0 :(得分:1)
运行时程序与数据库之间的不兼容性实际上与SQL无关。日期格式必须相同。供以后参考,这是解决方法:
String value = Datepicker1.Value.ToString();
String day = value.Substring(0,10);
这是一个非常简单的修复程序。
答案 1 :(得分:0)
如果我理解正确,那么您想将“ date_time,1,10”,“ Total”等值添加到您的SQL字符串中,这是正确的吗?
尝试一下,并将其作为MySqlDataAdapter中的第一个参数
var sql = $"SELECT SUBSTRING({date_time},1,10), sum({Total}), sum({Total_ly}), AVG ({(Total + Total_ly)/2}) FROM Transaction WHERE Substring({date_time},1,10)= @param1 Group By date_time Having sum({Total})<>0; ";
---编辑----
根据您的修改确定,请从此处https://dev.mysql.com/doc/dev/connector-net/6.10/html/P_MySql_Data_MySqlClient_MySqlDataAdapter_SelectCommand.htm尝试解决方案