You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL报错operand data type nvarchar is invalid for minus operator如何解决

问题原因

你的参数@minutesBack传入了字符串类型值,导致SQL执行时类型不匹配,该报错和mcl_createtime字段的datetime类型无关。
你在代码中将minutesBack定义为string类型:

string minutesBack = "60";

调用AddWithValue时,ADO.NET会根据传入值的类型自动推断SQL参数类型,这里会把@minutesBack识别为nvarchar类型。SQL语句中-@minutesBack的减号运算不能作用于字符串类型,因此抛出报错:

operand data type nvarchar is invalid for minus operator

修复方法
  1. 将minutesBack的变量类型改为数值类型int
  2. 建议显式指定SQL参数类型,避免AddWithValue自动推断带来的类型不匹配隐患

修改后的查询代码如下:

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";
// 改为int类型存储数值
int minutesBack = 60; 
SqlCommand command = new SqlCommand(query);
// 显式指定参数类型为Int
command.Parameters.Add("@minutesBack", SqlDbType.Int).Value = minutesBack;
DataSet ds = RunQuery(command, tablename);
可选优化

你写的RunQuery方法中,SqlConnection已经被包裹在using块中,离开作用域时会自动释放连接、关闭连接,finally块中手动关闭、释放连接的逻辑是冗余的,可以直接删除。


内容的提问来源于stack exchange,提问作者m_beta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:06:03