Format()函数不起作用?

12 sql t-sql format sql-server-2005 sql-server-2008

我试图在sql中执行以下内置函数,但它给了我错误,该函数不存在

我的查询:

select EmpId, EmpName, format(EmpJoinDate, "YYYY-DD-MM") as date from Employee
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

'format' is not a recognized built-in function name
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Kir*_*huk 10

请改用Convert功能.例:

select convert(varchar(5), GETDATE(), 126) + convert(varchar(5), GETDATE(), 105)
Run Code Online (Sandbox Code Playgroud)

  • 格式在2012年版本的T-SQL中.http://msdn.microsoft.com/en-us/library/hh213505(v = sql.110).aspx (7认同)
  • 是.w3schools很可怕; 请参阅http://w3fools.com/ - 它所谈论的任何SQL方言都不是T-SQL. (2认同)

Tom*_*m H 5

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

SELECT
    EmpId,
    EmpName,
    REPLACE(CONVERT(VARCHAR(10), EmpJoinDate, 102), '.', '-') AS date
FROM
    Employee
Run Code Online (Sandbox Code Playgroud)

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

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