[英]How to resolve operand data type nvarchar is invalid for minus operator
我有一个 SQL 查询,它试图获取过去一小时内创建的所有记录
string query = "select * from Monarchchangelog mcl WHERE LOWER(mcl.mcl_usercomment) LIKE 'bolt%' AND mcl.mcl_createtime > DATEADD(MINUTE, -@minutesBack, GETDATE()) ORDER BY mcl.mcl_createtime DESC";
string tablename = "NEW_UPDATES";
string minutesBack = "60"; //set by another function but for eg sake I've hardcoded the value
SqlCommand command = new SqlCommand(query);
command.Parameters.AddWithValue("minutesBack", minutesBack);
DataSet ds = RunQuery(command, tablename);
我正在使用以下代码执行
private DataSet RunQuery(SqlCommand command, String tablename)
{
DataSet ds = null;
SqlDataAdapter adapter = null;
using (SqlConnection oc = new SqlConnection(CONNECTIONSTRING))
{
try
{
oc.Open();
command.CommandType = CommandType.Text;
command.Connection = oc;
adapter = new SqlDataAdapter(command);
ds = new DataSet();
adapter.Fill(ds, tablename);
}
catch
{
if (ds != null)
{
ds.Dispose();
}
}
finally
{
if (oc != null)
{
oc.Close();
oc.Dispose();
}
}
}
return ds;
}
当我尝试执行此代码时,出现以下错误,但mcl_createtime
是datetime
数据类型
操作数数据类型 nvarchar 对减号运算符无效
有人可以让我知道我哪里出错了谢谢
在@DaleK 的评论的帮助下,我解决了这个问题,替换了代码
command.Parameters.AddWithValue("minutesBack", minutesBack);
用这件作品
command.Parameters.Add("minutesBack", SqlDbType.Int).Value = minutesBack;
传递参数的一种好方法是明确提及 sql 数据类型以避免此类数据类型问题。 有关更多详细信息,请点击链接AddWithValue vs Add 。
所以我将我的参数作为数字而不是字符串传递,也很好地理解了try-catch
, using
语句。 好好学习,谢谢大家的贡献。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.