sql-server - SQL2016 中的 dateadd 操作存在冲突,但 2012 中没有

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

我发现在 SQL Server 2012 和 SQL Server 2016 中添加 datedatetime 类型的行为存在差异。 对于查询:

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/

相关文章:

java - 来自java的dokuwiki认证

sql-server - 使用 SQL Server 存储过程导出 csv 文件中的表数据

mysql - SQL 用户事务

sql-server - 删除 Group By 中的重复值

sql-server-agent - 每次我启动 SQL Server 代理作业时,我都会收到错误日志

sql-server - 无法在 Windows Server 2008 R2 Core 上安装 SQL Server 2016

sql - 如何在 SQL Server 中的表类型上创建过滤索引?

c# - Entityframework Core 无法将类型为 'System.Int32' 的对象转换为类型 'System.Int64'

c# - 使用DB表结构创建DataTable

sql - 在 Sql Server 的 xml 中从最后获取第 n 个元素