Функция Format() не работает?

Я пытаюсь выполнить следующую встроенную функцию в sql, но это дает мне ошибку, что эта функция не существует

мой запрос:

select EmpId, EmpName, format(EmpJoinDate, "YYYY-DD-MM") as date from Employee

Ошибка, которую я получаю:

'format' is not a recognized built-in function name

В чем может быть проблема, или что я делаю неправильно?

Спасибо!

Ответ 1

Вместо этого используйте Convert. Пример:

select convert(varchar(5), GETDATE(), 126) + convert(varchar(5), GETDATE(), 105)

Ответ 2

Это потому, что FORMAT() не является встроенной функцией в SQL 2005. Вам нужно использовать функцию CONVERT():

SELECT
    EmpId,
    EmpName,
    REPLACE(CONVERT(VARCHAR(10), EmpJoinDate, 102), '.', '-') AS date
FROM
    Employee

Несколько предостережений, хотя... "date" - это зарезервированное слово, которое я считаю, поэтому я бы не предложил использовать его, даже как псевдоним столбца. Кроме того, вышесказанное фактически дает YYYY-MM-DD. YYYY-DD-MM довольно редко я верю. Если вы действительно хотите, чтобы вам нужно объединить все вместе с функциями DATEPART и CAST или объединить вещи, используя SUBSTRING с CONVERT.

Сделайте поиск в CONVERT, и вы сможете найти все поддерживаемые форматы. Тот, который я использовал выше (102), для YYYY.MM.DD, поэтому я сделал замену, чтобы вместо этого использовать дефис.

Ответ 4

Остальные ответы будут работать, но используйте какую-нибудь замену хаки и строку. Хотя вы можете установить date_style в 23, чтобы преобразовать прямо в формат "YYYY-DD-MM":

convert(varchar(10), EmpJoinDate, 23)

Полный список форматов, которые я хотел бы назвать этим удивительным SO-ответом: fooobar.com/info/29520/...