'<'附近的语法不正确

时间:2016-09-02 20:11:20

标签: sql-server tsql sql-server-2012 sql-server-2008-r2 iif

我有一项任务是获取一些在SQL Server 2012上正常运行的代码,以便在SQL Server 2008 R2上运行。我收到了这个错误:

  

其他信息:'<'

附近的语法不正确

当我尝试运行我的代码时,我发现在我的SQL代码行中出现了问题

ALTER TABLE [dbo].[WorkTimeEntries] 
  ADD [TimeFinishedForRuntime] AS ISNULL([TimeFinished],
        IIF ([TimeStarted] < SYSUTCDATETIME(), [dbo].[udf_GetCurrentDateTimeOffsetInTimeZone](DATENAME(TZOFFSET, [TimeStarted])), [TimeStarted]));

我已经读过,在这种情况下,当人们试图获取约会时会发生某种错误,但我不确定在我的情况下出了什么问题。

2 个答案:

答案 0 :(得分:5)

SQL Server 2008R2中没有IIF

将其替换为CASE

ALTER TABLE [dbo].[WorkTimeEntries] ADD [TimeFinishedForRuntime] AS ISNULL(
    [TimeFinished],
    CASE WHEN [TimeStarted] < SYSUTCDATETIME() THEN [dbo].[udf_GetCurrentDateTimeOffsetInTimeZone](DATENAME(TZOFFSET, [TimeStarted])) ELSE [TimeStarted] END);

答案 1 :(得分:0)

基本上,如果您在SQL代码中遇到任何语法错误,就会发生此错误。请重新验证所有语句顺序。