“<”附近的语法不正确
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 代码中有任何语法错误,就会发生此错误。请重新验证您的所有语句顺序。
我的任务是让一些在 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 代码中有任何语法错误,就会发生此错误。请重新验证您的所有语句顺序。