今天我无意间运行了一个SQL语句,用于按日期过滤一些项目。为简便起见,我们假设我使用了以下代码:
SELECT *
FROM [TableName]
WHERE [RecordCreated] >+ '2016-04-10'
只有在语句运行后,我才意识到我使用了 >+ 而不是 >=,现在我感到困惑,因为我本来期望会出现错误。
我尝试了一些其他的变化,例如
>- -- Throws an error
<+ -- Ran successfully
<- -- Throws an error
当我使用 >= 或 >+ 时,返回的行数完全相同。
在网上搜索后,我没有找到涵盖这种语法的文档,只有在两个运算符分开使用时才有。
RecordCreated
列是一个 datetime
类型。
这只是语法上的一种美观或可能常见错误的方式,还是试图将日期强制转换为数字值的潜在方法?
+
作为一元运算符进行解析(https://msdn.microsoft.com/en-us/library/ms174362.aspx)。然而,我对它在字符串/日期字面量上也能起作用感到惊讶。 - Gordon LinoffSELECT +'plus!'
会产生plus!
,尽管按照所有记录来看它不应该,因为一元加号据说只适用于数字类型,而字符串连接运算符需要另一个表达式。(由于字符串仍然是字符串,这不是T-SQL对隐式转换的迷恋导致问题的情况之一。) - Jeroen Mostert