FORMAT () не является встроенной функцией - PullRequest
2 голосов
/ 18 марта 2019

Мне нужно получить месяц и год от GETDATE(). Я использую

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

и возвращает правильное значение как «03 -2019». Как только я применяю вышеуказанный сегмент кода внутри хранимой процедуры, он выдает

FORMAT не является встроенной функцией

Итак, я переключился на приведенный ниже оператор, который возвращает тот же результат.

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

Почему SQL Server возвращает сообщение об ошибке, когда я использую FORMAT в хранимой процедуре, но работает с оператором SQL SELECT.

Хранимая процедура с FORMAT () выполняется в SQL Server 2014, но выдает ошибку в SQL 2017

Ответы [ 2 ]

6 голосов
/ 18 марта 2019

Похоже, уровень совместимости установлен на compatibility_level = 100.Это соответствует SQL Server 2008. Вот почему эта функция недоступна.

Уровень совместимости можно проверить с помощью:

SELECT name, compatibility_level FROM sys.databases

И установить современное значение с помощью:

-- 140 = SQL Server 2017
ALTER DATABASE [yourDb] SET COMPATIBILITY_LEVEL = 140
0 голосов
/ 18 марта 2019

Функция FORMAT доступна с версии 2012 года.

enter image description here

Можете ли вы проверить SELECT @@version?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...