具有空日期类型的SQL Server 2016 Convert函数不同于SQL Server 2008 R2

问题描述 投票:0回答:1

我面临有关SQL Server内置函数CONVERT的问题。

从SQL Server 2008 R2迁移到2016年之后,此迁移存在一个差异。

我已经通过了最新的MS Doc的CONVERT函数,当提供的datatype参数为null时,它将返回null。我不知道为什么SQL Server 2008 R2可以正常工作。...

在SQL Server 2008 R2中:

SELECT CONVERT (DATE, GETDATE(), NULL) 

返回日期值。

在SQL Server 2016中:

SELECT CONVERT (DATE, GETDATE(), NULL) 

返回NULL

PS:返回NULL是正确的行为,但我想知道为什么早期版本返回日期值。

sql-server sql-server-2008-r2 sql-server-2016
1个回答
1
投票

此重大更改的旧行为可以由数据库兼容性级别控制。兼容性级别100(SQL Server 2008)将返回非空值。

关于原因,Microsoft似乎确定NULL是返回NULL样式的正确值,并相应地更改了行为。较早的数据库兼容性级别提供了一种在可以修复之前避免破坏代码的方法。

© www.soinside.com 2019 - 2024. All rights reserved.