我发现在SQL Server 2012和SQL Server 2016中添加date
和datetime
类型的行为有所不同。
对于查询:
select convert(date,getdate())+getdate()
我在SQL2016中遇到错误:
数据类型date和datetime在add运算符中不兼容。
2012年,它不会返回任何错误,只会返回核心日期总和。 这种行为的原因是什么?
答案 0 :(得分:2)
在SQL Server 2012中,操作员(默默地?)更改为禁止添加或减少不匹配的类型。它显然与SQL Server 2008分别存储日期和时间的能力有关。您需要转换为常见类型(例如,转换为日期,然后转换为日期时间)。
对我来说似乎是一个非常大的突破性变化,但显然微软认为这是必要的。