Sql FORMAT()不是内置函数
我需要从Sql FORMAT()不是内置函数,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要从GETDATE()中检索月份和年份。我正在使用 SELECT FORMAT(GETDATE(), 'MM-yyyy') 它返回的正确值为“03-2019”。 一旦我将上述代码段应用到存储过程中,它就会抛出 格式不是内置函数 所以我切换到下面的语句,它返回相同的输出 SELECT RIGHT(CONVERT(VARCHAR(10),GETDATE(),105),7) 为什么SQL Server在存储过程中使用FORMAT但在SQLSELECT语句中使用时返回错误消息 带FORMAT(
GETDATE()
中检索月份和年份。我正在使用
SELECT FORMAT(GETDATE(), 'MM-yyyy')
它返回的正确值为“03-2019”。
一旦我将上述代码段应用到存储过程中,它就会抛出
格式不是内置函数
所以我切换到下面的语句,它返回相同的输出
SELECT RIGHT(CONVERT(VARCHAR(10),GETDATE(),105),7)
为什么SQL Server在存储过程中使用FORMAT
但在SQLSELECT
语句中使用时返回错误消息
带FORMAT()的存储过程在SQL server 2014中执行,但在SQL 2017中抛出错误FORMAT函数从2012版起可用
你能检查一下
SELECT@@version
?看起来兼容性级别设置为compatibility\u level=100
。
这对应于SQL Server 2008。这就是为什么该功能不可用的原因
可通过以下方式检查兼容性级别:
SELECT name, compatibility_level FROM sys.databases
可通过以下方式将其设置为现代价值:
-- 140 = SQL Server 2017
ALTER DATABASE [yourDb] SET COMPATIBILITY_LEVEL = 140
这也可以作为一个评论而不是一个答案。亚历山大的答案很可能是正确的,但是,你应该读亚伦·伯坦德的。底线是,由于性能问题,当可以进行简单转换时,可能应该避免使用格式。另外,作为旁注,您可以直接转换为
char(7)
,而不是繁琐的varchar(10)
,然后再转换为right
。