web-dev-qa-db-ja.com

Format()関数が機能しませんか?

SQLで次の組み込み関数を実行しようとしていますが、この関数が存在しないというエラーが表示されます

私の質問:

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

私が得ているエラー:

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

何が問題なのか、何が間違っているのでしょうか?

ありがとう!

12
user728885

代わりに Convert 関数を使用してください。例:

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

これは、FORMAT()がSQL2005の組み込み関数ではないためです。CONVERT()関数を使用する必要があります。

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

ただし、いくつか注意点があります...「日付」は予約語であると私は信じているので、列のエイリアスとしても使用することはお勧めしません。また、上記は実際にYYYY-MM-DDを与えます。 YYYY-DD-MMはかなり珍しいと思います。本当に必要な場合は、DATEPART関数とCAST関数を使用して自分で連結するか、SUBSTRINGCONVERTを使用して連結する必要があります。

CONVERTで検索すると、サポートされているさまざまな形式がすべて見つかるはずです。上で使用したもの(102)はYYYY.MM.DD用であるため、代わりにハイフンを指定するように置き換えました。

5
Tom H

MSDNのドキュメントによると、 http://msdn.Microsoft.com/en-us/library/hh213505(SQL.110).aspx 、これは組み込み関数です。実装されていないと思います。

2
RW5207

他の答えは機能しますが、いくつかのハッキーな文字列置換と連結を使用します。 date_styleを23に設定して、「YYYY-DD-MM」形式に直接変換することもできます。

convert(varchar(10), EmpJoinDate, 23)

フォーマットの完全なリストについては、この素晴らしいSO-answerを参照したいと思います: https://stackoverflow.com/a/19537658/2140636

0
T_D