“<”附近的语法不正确

Incorrect syntax near '<'

我的任务是让一些在 SQL Server 2012 上正常工作的代码也能在 SQL Server 2008 R2 上工作。我收到此错误:

Additional information: Incorrect syntax near '<'

当我尝试 运行 我的代码时,我发现 SQL 代码的这一行有问题

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

我了解到在这种情况下,当人们尝试获取日期时会发生某种错误,但我不确定我的情况出了什么问题。

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);

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