FORMAT()不是内置函数

Har*_*a W 2 sql t-sql sql-server

我需要从中检索月份和年份GETDATE()。我在用

SELECT FORMAT(GETDATE(), 'MM-yyyy') 
Run Code Online (Sandbox Code Playgroud)

并传回正确的值'03 -2019'。一旦在存储过程中应用了上面的代码段,它就会抛出

格式不是内置函数

所以我切换到下面的语句,该语句返回相同的输出。

SELECT RIGHT(CONVERT(VARCHAR(10),GETDATE(),105),7)
Run Code Online (Sandbox Code Playgroud)

为什么FORMAT在存储过程中使用SQL Server 却在SQL SELECT语句中使用SQL Server时会返回错误消息。

具有FORMAT()的存储过程在SQL Server 2014中执行,但在SQL 2017中引发错误

Ale*_*lok 6

好像兼容性级别设置为compatibility_level = 100。这对应于SQL Server2008。这就是为什么该功能不可用的原因。

兼容性级别可以通过以下方式检查:

SELECT name, compatibility_level FROM sys.databases
Run Code Online (Sandbox Code Playgroud)

可以通过以下方式将其设置为现代值:

-- 140 = SQL Server 2017
ALTER DATABASE [yourDb] SET COMPATIBILITY_LEVEL = 140
Run Code Online (Sandbox Code Playgroud)