Ответ 1
Вместо этого используйте Convert
. Пример:
select convert(varchar(5), GETDATE(), 126) + convert(varchar(5), GETDATE(), 105)
Я пытаюсь выполнить следующую встроенную функцию в sql, но это дает мне ошибку, что эта функция не существует
мой запрос:
select EmpId, EmpName, format(EmpJoinDate, "YYYY-DD-MM") as date from Employee
Ошибка, которую я получаю:
'format' is not a recognized built-in function name
В чем может быть проблема, или что я делаю неправильно?
Спасибо!
Вместо этого используйте Convert
. Пример:
select convert(varchar(5), GETDATE(), 126) + convert(varchar(5), GETDATE(), 105)
Это потому, что 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, поэтому я сделал замену, чтобы вместо этого использовать дефис.
Согласно документации MSDN http://msdn.microsoft.com/en-us/library/hh213505(SQL.110).aspx, это встроенная функция. Я предполагаю, что он не был реализован.
Остальные ответы будут работать, но используйте какую-нибудь замену хаки и строку. Хотя вы можете установить date_style
в 23, чтобы преобразовать прямо в формат "YYYY-DD-MM":
convert(varchar(10), EmpJoinDate, 23)
Полный список форматов, которые я хотел бы назвать этим удивительным SO-ответом: fooobar.com/info/29520/...