我有一个 SQL Server 2016 实例,上面有一个数据库,以 2008 的兼容级别运行。但是,下面的虚拟 proc 创建并执行得很好。
CREATE PROC usp_TestFormat
AS
BEGIN
SELECT FORMAT(CAST('10/25/2018' AS DATE), 'MMM') AS Month;
END;
Run Code Online (Sandbox Code Playgroud)
然而 FORMAT() 是一个 2012+ 函数,所以当我尝试使用我在上面的数据库中编写的存储过程,或者甚至上面的测试过程,并将它部署到我们的生产数据库中,它在 2008r2 机器上运行,它失败了,因为它无法识别该功能。我的理解是兼容性级别会阻止这种类型的行为,因为我现在必须检查并重新编写使用 format 函数的代码。这是一个错误,还是我不像我想象的那样了解兼容性级别?