ホームページ >データベース >mysql チュートリアル >SQL Server の DateTime フィールドから時間を効率的に削除するにはどうすればよいですか?
SQL Server: DateTime データから時間を効率的に削除する
SQL Server で datetime
フィールドを操作するには、多くの場合、時刻を破棄して日付コンポーネントを分離する必要があります。 この記事では、2 つの一般的な手法、DATEADD
/DATEDIFF
と char
へのキャストを比較し、それらのパフォーマンス特性を分析します。
メソッドの比較
DATEADD
/DATEDIFF
アプローチ:
<code class="language-sql">a) SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>
これは、DATEDIFF
を巧みに使用してエポック (1900-01-01) からの日数の差を計算し、次に DATEADD
を使用して時間コンポーネントなしで日付を再構成します。
または、char
にキャストします:
<code class="language-sql">b) SELECT CAST(CONVERT(CHAR(11), GETDATE(), 113) AS DATETIME)</code>
これは、datetime
を文字列 (日付のみを表示) に変換し、その後 datetime
に戻します。
パフォーマンス分析
テストの結果、方法 (a) – DATEADD
/DATEDIFF
– 一般に、特に大規模なデータセットの場合、消費する CPU リソースが少なくなることがわかりました。 ただし、言語と日付の形式の不一致に関連する潜在的な問題の影響を受けやすくなります。
方法 (b) – キャスト – は、中間の char
変換により若干多くのデータを転送する可能性がありますが、通常、このオーバーヘッドは (a) の潜在的なパフォーマンス向上よりも影響が小さくなります。
さらなる考慮事項
SQL Server 2008 以降、DATE
データ型に直接キャストする、より直接的な方法が利用可能になりました。
おすすめ
どちらの方法でも望ましい結果が得られますが、最適な選択はアプリケーションのコンテキストによって異なります。 特に大規模なデータセットで優れたパフォーマンスを得るには、通常、DATEADD
/DATEDIFF
(方法 a) が推奨されます。 datetime
列のインデックス作成が重要な場合は、DATE
にキャストするか、時間コンポーネントがインデックスの使用に影響を与えないようにすることを検討してください。
以上がSQL Server の DateTime フィールドから時間を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。