我只需要确认我理解正确:
我最近查看了一个 SO 问题,其中用户在 Linq 中发布了一个答案,例如:
from p in db.table where p.column.AddMinutes(1) > DateTime.Now select p
Run Code Online (Sandbox Code Playgroud)
对于那些不熟悉 Linq 的人,我希望该语句的输出(未经公平测试)是:
SELECT *
FROM table t
WHERE DATEADD(min, 1, t.column) >= GETDATE()
Run Code Online (Sandbox Code Playgroud)
我对此发表了回复,说日期时间操作应该在变量上(在这种情况下GETDATE()
),因此实际上该语句应该反映如下内容:
SELECT *
FROM table t
WHERE t.column >= DATEADD(min, -1, GETDATE())
Run Code Online (Sandbox Code Playgroud)
在我的回复中,我现在不确定的部分,假设如下:
我的问题:
我在推理中遗漏了什么吗?我对么?最后,有没有机构有关于 SARGability 的好文章?