2011-06-24 48 views
11

は、私はSQLの組み込み関数を次のように実行しようとしていますが、それは私にこの機能が存在しないというエラーを出しますFormat()関数が機能しません。

私のクエリ:

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

エラー私は取得しています:

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

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

ありがとうございます!

答えて

7

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

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

なぜformat()が動作しないのですか? –

+0

SQL Serverには存在しないため、Accessについて考えていますか? –

+0

エラーメッセージには、有効な機能ではないと記載されているためです。 – Ray

5

FORMAT()あなたはCONVERT()機能を使用する必要がありますSQL 2005の組み込み関数ではないためです。

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

しかし、いくつかの注意点が...「日付」があります私は信じているので、それを列のエイリアスとして使用することはお勧めしません。また、実際にはYYYY-MM-DDとなります。 YYYY-DD-MMは私が信じるのはかなりまれです。あなたが本当に望むのであれば、DATEPARTCAST関数を組み合わせたり、SUBSTRINGを使ってCONVERTを使って物事を連結する必要があります。

CONVERTを検索すると、サポートされているさまざまな形式をすべて見つけることができます。上記(102)で使用したのはYYYY.MM.DD用ですので、代わりにハイフンを付けました。

+0

「YYYY-DD-MM」に直接書式を設定するために 'convert(varchar(10)、EmpJoinDate、23)私はちょうどそれが最も一般的な答えであることを期待して... –

2

MSDNのドキュメントhttp://msdn.microsoft.com/en-us/library/hh213505(SQL.110).aspxによれば、それは組み込み関数です。私はそれが実装されていないと仮定しています。

+6

このページは、タイトルのすぐ下に示されているように、SQL Server "Denali"(現在は公式にSQL Server 2012)用です。他のバージョンでサポートされていれば、このテキストはドロップダウンリストになります。 – onedaywhen

0

他の回答はうまくいくでしょうが、いくつかのハッキーな文字列の置換とコンカチを使用します。あなたがまっすぐ「YYYY-DD-MM」形式に変換するために23にdate_styleを設定することもできますが:フォーマットの完全なリストについては

convert(varchar(10), EmpJoinDate, 23) 

私はこの素晴らしいSO-の回答を参照したいと思います:https://stackoverflow.com/a/19537658/2140636

関連する問題