运算符> +与SQL Server 2012中的> =有何不同

时间:2016-04-19 10:53:48

标签: sql-server tsql

今天我非常偶然地运行了一个SQL语句来按日期过滤一些项目,为简单起见,我们会说我用了

SELECT * 
FROM [TableName] 
WHERE [RecordCreated] >+ '2016-04-10'

只有在语句运行后我才意识到我使用了> +而不是> =,现在我感到很困惑,因为我预料到会出错。

我尝试了其他一些变体,例如

>- -- Throws an error
<+ -- Ran successfully
<- -- Throws an error

无论是否使用&gt; =或&gt; +

,返回的行数都完全相同

在线搜索后,我找不到任何直接涵盖此语法的文档,只有在两个运算符分开使用时才会找到。

RecordCreated列是datetime

对于可能存在的常见错误,这只是一个非常精确的语法,还是可能会尝试将日期转换为数值?

2 个答案:

答案 0 :(得分:2)

这似乎是&#39; +&#39;运营商。

根据Microsoft团队的更新,

  

经过一些调查,这种行为是设计的,因为+是一个   一元运算符。所以解析器接受&#34; +,&#39; +&#39;是   在这种情况下简单地忽略。改变这种行为有很多   向后兼容性的影响,所以我们不打算改变它&amp;   该修复程序将为应用程序代码引入不必要的更改。

你可以通过RGO找到他自己的问题here的非常好的答案。

答案 1 :(得分:-2)

结果不应与&#34;&gt; =&#34;匹配和&#34;&lt; =&#34;但是&#34;&gt;&#34;和&#34;&lt;&#34;。刚检查过,rowcound变化2 - 第一个和最后一个项目被删除。