SQL2016中的dateadd操作冲突,但不是2012

时间:2017-12-21 20:06:59

标签: sql-server sql-server-2012 sql-server-2016

我发现在SQL Server 2012和SQL Server 2016中添加datedatetime类型的行为有所不同。 对于查询:

select convert(date,getdate())+getdate()

我在SQL2016中遇到错误:

  

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

2012年,它不会返回任何错误,只会返回核心日期总和。 这种行为的原因是什么?

1 个答案:

答案 0 :(得分:2)

在SQL Server 2012中,操作员(默默地?)更改为禁止添加或减少不匹配的类型。它显然与SQL Server 2008分别存储日期和时间的能力有关。您需要转换为常见类型(例如,转换为日期,然后转换为日期时间)。

对我来说似乎是一个非常大的突破性变化,但显然微软认为这是必要的。