CAST
とCONVERT
を使用する場合の一般的なガイダンスは何ですか?どちらか一方を選択することに関連するパフォーマンスの問題はありますか? 1つはANSI-SQLに近いですか?
CONVERT
はSQL Server固有で、CAST
はANSIです。
CONVERT
は、日付などをフォーマットできるという点でより柔軟性があります。それ以外はほぼ同じです。拡張機能を気にしない場合は、CAST
を使用します。
編集:
以下のコメントの@beruicと@ C-Fで述べているように、暗黙の変換(つまり、CASTもCONVERTも使用しない変換)を使用すると、精度が失われる可能性があります。詳細については、 CASTおよびCONVERT 、特にこのグラフィックス SQL Serverデータ型変換チャート を参照してください。この追加情報を使用しても、元のアドバイスは変わりません。可能な場合はCASTを使用します。
Convertには、日付から文字列への変換用のスタイルパラメータがあります。
CASTは標準SQLですが、CONVERTはそうではありません(方言T-SQLのみ)。datetimeの場合の変換には小さな利点があります。
cASTでは、式とターゲットタイプを指定します。 CONVERTには、変換のスタイルを表す3番目の引数があります。これは、文字列と日時の値の間など、一部の変換でサポートされています。たとえば、CONVERT(DATE、 '1/2/2012'、101)は、米国標準を表すスタイル101を使用してリテラル文字列をDATEに変換します。
よろしく、
上記の答え を展開するにはShaktiによりコピー、実際に2つの機能のパフォーマンスの違いを測定することができました。
この質問 のソリューションのバリエーションのパフォーマンスをテストしていましたが、CAST
を使用すると標準偏差と最大ランタイムが大きくなることがわかりました。
* DateTime
型の精度 に従って、ミリ秒単位で最も近い1/300秒に丸められた時間
誰もまだ気付いていないように見えるのは読みやすさです。持っている…
CONVERT(SomeType,
SomeReallyLongExpression
+ ThatMayEvenSpan
+ MultipleLines
)
…よりも理解しやすいかもしれません…
CAST(SomeReallyLongExpression
+ ThatMayEvenSpan
+ MultipleLines
AS SomeType
)
CASTはANSI標準を使用します。移植性の場合、これは他のプラットフォームでも機能します。 CONVERTは、SQLサーバーに固有です。しかし、非常に強力な機能です。日付に異なるスタイルを指定できます