我正在尝试按月使用此脚本进行日期控制
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'>'
附近的语法不正确
编辑:
当我尝试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'
我做错了什么或这是一个错误?
答案 0 :(得分:4)
如果您没有在正确版本的SQL Server上运行,或者数据库的兼容级别未能充分设置,则会发生这种情况。
检查兼容级别:
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
答案 1 :(得分:1)
它应该正常工作。您也可以使用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
答案 2 :(得分:0)
我遇到了同样的问题,因为SQL Server 2012中引入了<span class="jellyYellow0001 sprite"></span>
,但我的客户端使用了2008R2。请改为使用IIF
:SQL Server 2008 IIF statement does not seem enabled