SQL Server:从2008年到2014年: - 数据类型的日期时间和时间在add运算符中不兼容。还有其他方法吗?

时间:2015-05-11 10:56:41

标签: sql sql-server-2008 datetime sql-server-2014 sqlmigrations

我正在从SQL Server 2008迁移到2014年,我收到错误

  

数据类型datetime和time在add运算符中不兼容。

我想出解决方案将时间转换为DateTime,但我在许多存储过程和视图中都有变化。

针对上述问题还有其他解决方案吗?

1 个答案:

答案 0 :(得分:3)

如果您希望升级到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