FORMAT()不是内置函数

时间:2019-03-18 11:55:48

标签: sql sql-server tsql

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

SELECT FORMAT(GETDATE(), 'MM-yyyy') 

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

  

FORMAT不是内置函数

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

SELECT RIGHT(CONVERT(VARCHAR(10),GETDATE(),105),7)

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

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

2 个答案:

答案 0 :(得分:6)

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

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

SELECT name, compatibility_level FROM sys.databases

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

-- 140 = SQL Server 2017
ALTER DATABASE [yourDb] SET COMPATIBILITY_LEVEL = 140

答案 1 :(得分:0)

FORMAT功能从2012版开始可用。

enter image description here

您可以检查SELECT @@version吗?