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中引发错误
好像兼容性级别设置为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)