我正在使用带有Postgres npgsql的Dapper,我在使用INTERVAL
执行SQL命令时遇到了问题。该命令在我的代码之外工作正常。
我得到了错误
Npgsql.PostgresException:“42601:“$1”处或其附近出现语法错误
位置:85'
位置85正是参数@ageInDays所在的位置。
我的密码是
int ageInDays = 90;
string mysql = "DELETE FROM Monitorvalues m1 WHERE lastupdate < current_date - INTERVAL @ageInDays DAY";
using (var connection = GetConnection)
{
var dynamicParameters = new DynamicParameters();
dynamicParameters.Add("ageInDays", ageInDays);
return await connection.ExecuteScalarAsync<int>(mysql, dynamicParameters);
}
我做错了什么?
1条答案
按热度按时间aurhwmvo1#
当前的Npgsql不支持参数化的
INTERVAL
子句。一个可能的解决方案是定义一个变量,然后直接传递给它。这应该没有问题