IIF 'Incorrect syntax near' 错误 SQL Server 2014
IIF 'Incorrect syntax near' error at SQL Server 2014
我正在尝试使用此脚本按月控制日期
DECLARE @Date DATETIME = '2015-07-31';
DECLARE @MonthCount INT = 3;
DECLARE @controlDate DATETIME = '2015-04-28';
SELECT
MONTH(@controlDate),
MONTH(DATEADD(MONTH, -@MonthCount, @Date)),
IIF(MONTH(@controlDate) > MONTH(DATEADD(MONTH, -@MonthCount, @Date)),'OK','No') as isOK
但是我收到这个语法错误:
Msg 102, Level 15, State 1, Line 8 Incorrect syntax near '>'
编辑:
当我尝试 if
它正在工作:
DECLARE @Date DATETIME = '2015-07-31';
DECLARE @MonthCount INT = 3;
DECLARE @controlDate DATETIME = '2015-04-28';
if(MONTH(@controlDate) > MONTH(DATEADD(MONTH, -@MonthCount, @Date)))
print 'OK'
else
print 'No'
我做错了什么或者这是一个错误?
如果您 运行 使用的 SQL 服务器版本不正确,或者数据库的兼容级别设置不充分,就会发生这种情况。
检查兼容性级别:
select compatibility_level
from sys.databases
where name = '<database name>'
要更改兼容级别:
alter database <database-name>
set compatibility level = 110 -- SQL Server 2012
兼容性级别列表:https://msdn.microsoft.com/en-us/library/bb510680.aspx
它应该可以正常工作。您还可以使用 CASE 表达式
DECLARE @Date DATETIME = '2015-07-31';
DECLARE @MonthCount INT = 3;
DECLARE @controlDate DATETIME = '2015-04-28';
SELECT
MONTH(@controlDate),
MONTH(DATEADD(MONTH, -@MonthCount, @Date)),
case when MONTH(@controlDate) >
MONTH(DATEADD(MONTH, -@MonthCount, @Date)) then 'OK' else 'No' end as isOK
我遇到了同样的问题,因为 IIF
是在 SQL Server 2012 中引入的,但我的客户使用的是 2008R2。使用 case
代替:SQL Server 2008 IIF statement does not seem enabled
我正在尝试使用此脚本按月控制日期
DECLARE @Date DATETIME = '2015-07-31';
DECLARE @MonthCount INT = 3;
DECLARE @controlDate DATETIME = '2015-04-28';
SELECT
MONTH(@controlDate),
MONTH(DATEADD(MONTH, -@MonthCount, @Date)),
IIF(MONTH(@controlDate) > MONTH(DATEADD(MONTH, -@MonthCount, @Date)),'OK','No') as isOK
但是我收到这个语法错误:
Msg 102, Level 15, State 1, Line 8 Incorrect syntax near '>'
编辑:
当我尝试 if
它正在工作:
DECLARE @Date DATETIME = '2015-07-31';
DECLARE @MonthCount INT = 3;
DECLARE @controlDate DATETIME = '2015-04-28';
if(MONTH(@controlDate) > MONTH(DATEADD(MONTH, -@MonthCount, @Date)))
print 'OK'
else
print 'No'
我做错了什么或者这是一个错误?
如果您 运行 使用的 SQL 服务器版本不正确,或者数据库的兼容级别设置不充分,就会发生这种情况。
检查兼容性级别:
select compatibility_level
from sys.databases
where name = '<database name>'
要更改兼容级别:
alter database <database-name>
set compatibility level = 110 -- SQL Server 2012
兼容性级别列表:https://msdn.microsoft.com/en-us/library/bb510680.aspx
它应该可以正常工作。您还可以使用 CASE 表达式
DECLARE @Date DATETIME = '2015-07-31';
DECLARE @MonthCount INT = 3;
DECLARE @controlDate DATETIME = '2015-04-28';
SELECT
MONTH(@controlDate),
MONTH(DATEADD(MONTH, -@MonthCount, @Date)),
case when MONTH(@controlDate) >
MONTH(DATEADD(MONTH, -@MonthCount, @Date)) then 'OK' else 'No' end as isOK
我遇到了同样的问题,因为 IIF
是在 SQL Server 2012 中引入的,但我的客户使用的是 2008R2。使用 case
代替:SQL Server 2008 IIF statement does not seem enabled