我发现在 SQL Server 2012 和 SQL Server 2016 中添加 date
和 datetime
类型的行为存在差异。
对于查询:
select convert(date,getdate())+getdate()
我在 SQL2016 中遇到错误:
The data types date and datetime are incompatible in the add operator.
在 2012 年,它不会返回任何错误,只是返回日期的正确总和。 这种行为的原因是什么?
最佳答案
在 SQL Server 2012 中,运算符(默默地?)更改为不允许添加或删除不匹配的类型。它显然与 SQL Server 2008 单独存储日期和时间的能力有关。您需要转换为常见类型(例如转换为日期,然后转换为日期时间)。
对我来说这似乎是一个相当大的突破性改变,但显然微软认为这是必要的。
关于sql-server - SQL2016 中的 dateadd 操作存在冲突,但 2012 中没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47932043/