完全偶然的今天我运行了一个sql语句按日期过滤一些项目,为简单起见,我们会说我用过
SELECT * FROM [TableName] WHERE [RecordCreated] >+ '2016-04-10'
只有在声明完成后我才意识到我曾使用过>而不是> =,现在我感到困惑,因为我预期会出现错误.
我尝试了其他一些变体,例如
>- -- Throws an error <+ -- Ran successfully <- -- Throws an error
无论我使用> =还是>,返回的行数都完全相同
在线搜索后,我找不到任何直接涵盖此语法的文档,只有当两个运算符分开使用时才会找到.
RecordCreated列是日期时间.
对于可能的常见错误,这只是一个非常精确的语法,还是可能尝试将日期转换为数值?
解决方法
这似乎是”操作符的错误.
根据微软团队的更新,
After some investigation,this behavior is by design since + is an
unary operator. So the parser accepts “+,and the ‘+’ is
simply ignored in this case. Changing this behavior has lot of
backward compatibility implications so we don’t intend to change it &
the fix will introduce unnecessary changes for application code.