我需要从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中引发错误
答案 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)