我正在使用SQL Dapper,我想从UI传递像 DATEADD(yy,DATEDIFF(yy,0,getdate())+ 1,-1)这样的参数。我怎么能这样做?
DynamicParameter将key作为字符串,将value作为对象,我将密钥作为我在查询中指定的参数传递,并将值作为我从ui获取的表达式,这里是我得到的错误转换失败时从字符串转换日期和/或时间。
- 需要帮助。
答案 0 :(得分:3)
我不清楚要将哪个位作为参数发送,因为:
DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1)
不是参数。最终,您可以直接将其烘焙到SQL中,尽管您可能希望在变量中对其进行敲击:
declare @when datetime = DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1);
-- some more sql here, at some point using @when
如果您只想传递日期作为参数,请先执行日期代码:
DateTime when = // some C# here...
var data = conn.Query<Whatever>(sql, new { when, ... }).ToList();
永远不可能直接将复杂语句(例如DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1)
)作为单个类型参数传递。在正常使用中,类型(例如)datetime
的参数被赋予单个值,通常来自计算的DateTime
。