ホームページ >データベース >mysql チュートリアル >SQL Server の日時フィールドから時刻部分を効率的に削除するにはどうすればよいですか?
datetime
フィールドからの日付抽出の最適化SQL Server datetime
フィールドから日付部分だけを抽出するのは一般的なタスクです。 ここでは、効率性を考慮して 2 つの一般的なアプローチを比較します。
方法 A:
<code class="language-sql">SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>
方法 B:
<code class="language-sql">SELECT CAST(CONVERT(CHAR(11), GETDATE(), 113) AS DATETIME)</code>
パフォーマンスベンチマーク
どちらの方法も一般に高速ですが、方法 A は、特に大規模なデータセットで常に優れたパフォーマンスを示します。 100 万行のデータセットでテストしたところ、方法 A を使用すると CPU 消費量が大幅に減少し、その効率性が強調されました。
追加要素
速度以外にも、他の考慮事項がメソッドの選択に影響します。
CONVERT
から CHAR
に依存すると、ロケール固有の日付形式に関する潜在的な問題が発生します。FLOAT
を利用するため、ストレージに影響する可能性があります。SQL Server 2008 以降
SQL Server 2008 以降のバージョンの場合、CAST
関数は合理化された代替手段を提供します。
<code class="language-sql">CAST(GETDATE() AS DATE)</code>
このアプローチは効率的であり、DATE
データ型を直接返します。
インデックスの最適化
重要なことは、CAST
句内で関数または WHERE
操作を適用すると、インデックスの使用が妨げられ、クエリのパフォーマンスに影響を与える可能性があります。 最適なクエリ速度を維持するには、可能な限りそのような行為を避けてください。
おすすめ
パフォーマンスと適応性を考慮して、SQL Server の datetime
フィールドから時間コンポーネントを削除する推奨方法は次のとおりです。
<code class="language-sql">SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>
以上がSQL Server の日時フィールドから時刻部分を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。