今天我非常偶然地运行了一个SQL语句来按日期过滤一些项目,为简单起见,我们会说我用了
SELECT *
FROM [TableName]
WHERE [RecordCreated] >+ '2016-04-10'
只有在语句运行后我才意识到我使用了> +而不是> =,现在我感到很困惑,因为我预料到会出错。
我尝试了其他一些变体,例如
>- -- Throws an error
<+ -- Ran successfully
<- -- Throws an error
无论是否使用&gt; =或&gt; +
,返回的行数都完全相同在线搜索后,我找不到任何直接涵盖此语法的文档,只有在两个运算符分开使用时才会找到。
RecordCreated
列是datetime
。
对于可能存在的常见错误,这只是一个非常精确的语法,还是可能会尝试将日期转换为数值?
答案 0 :(得分:2)
这似乎是&#39; +&#39;运营商。
根据Microsoft团队的更新,
经过一些调查,这种行为是设计的,因为+是一个 一元运算符。所以解析器接受&#34; +,&#39; +&#39;是 在这种情况下简单地忽略。改变这种行为有很多 向后兼容性的影响,所以我们不打算改变它&amp; 该修复程序将为应用程序代码引入不必要的更改。
答案 1 :(得分:-2)
结果不应与&#34;&gt; =&#34;匹配和&#34;&lt; =&#34;但是&#34;&gt;&#34;和&#34;&lt;&#34;。刚检查过,rowcound变化2 - 第一个和最后一个项目被删除。