SQL 服务器:从 2008 年到 2014 年:-数据类型 datetime 和 time 在 add 运算符中不兼容。还有其他解决方案吗?

SQL Server: From 2008 To 2014 :-The data types datetime and time are incompatible in the add operator. Any other solution?

我正在从 SQL Server 2008 迁移到 2014,但出现错误

The data types datetime and time are incompatible in the add operator.

我找到了将时间转换为 DateTime 的解决方案,但我对许多存储过程和视图进行了更改。

以上问题还有其他解决方法吗?

如果您想升级到 SQL2014,除了重构代码之外没有其他解决方案。下面的示例演示了将兼容级别设置为 2008 并不能解决此错误。您将不得不修改所有存储过程和视图。

ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = 100
GO
--DOESNOT WORK IN 2012 
DECLARE @ESTRecords TABLE
    (
     ESTime TIME(7) NOT NULL ,
     ESTDate DATE NOT NULL ,
     ESTDateTime AS ( CONVERT(DATETIME, ESTDate, ( 108 )) + ESTime )
       PERSISTED
    )

INSERT  INTO @ESTRecords
       ( ESTime, ESTDate )
VALUES  ( '12:00 PM', '12/31/2012' )

SELECT  *
FROM       @ESTRecords