我面临有关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
是正确的行为,但我想知道为什么早期版本返回日期值。
此重大更改的旧行为可以由数据库兼容性级别控制。兼容性级别100(SQL Server 2008)将返回非空值。
关于原因,Microsoft似乎确定NULL
是返回NULL
样式的正确值,并相应地更改了行为。较早的数据库兼容性级别提供了一种在可以修复之前避免破坏代码的方法。