Format()函数不起作用?

时间:2011-06-24 15:02:37

标签: sql sql-server-2005 tsql sql-server-2008 format

我正在尝试在sql中执行以下内置函数,但它给出了错误,表明此函数不存在

我的疑问:

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

我得到的错误:

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

可能是什么问题,或者我做错了什么?

谢谢!

4 个答案:

答案 0 :(得分:10)

请改用Convert功能。例如:

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

答案 1 :(得分:5)

那是因为FORMAT()不是SQL 2005中的内置函数。您需要使用CONVERT()函数:

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

一些警告虽然......“日期”是我认为的保留字,所以我不会建议使用它,即使作为列别名。而且,以上实际上给出了YYYY-MM-DD。我相信YYYY-DD-MM非常罕见。如果您真的希望自己需要使用DATEPARTCAST函数将自己连接在一起,或者使用SUBSTRINGCONVERTCONVERT连接起来。

在{{1}}上进行搜索,您应该能够找到所有支持的格式。我上面使用的那个(102)是YYYY.MM.DD,所以我做了一个替换来代替连字符。

答案 2 :(得分:2)

根据MSDN文档http://msdn.microsoft.com/en-us/library/hh213505(SQL.110).aspx,它是一个内置函数。我假设它尚未实施。

答案 3 :(得分:0)

其他答案可行,但使用一些hacky字符串替换和concats。虽然您可以将date_style设置为23以直接转换为“YYYY-DD-MM”格式:

convert(varchar(10), EmpJoinDate, 23)

有关格式的完整列表,我想参考这个非常棒的答案:https://stackoverflow.com/a/19537658/2140636