ホームページ >データベース >mysql チュートリアル >SQL Server の DateTime フィールドから時間を効率的に削除するにはどうすればよいですか?

SQL Server の DateTime フィールドから時間を効率的に削除するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-22 10:51:10781ブラウズ

How to Efficiently Remove Time from DateTime Fields in SQL Server?

SQL Server: DateTime データから時間を効率的に削除する

SQL Server で datetime フィールドを操作するには、多くの場合、時刻を破棄して日付コンポーネントを分離する必要があります。 この記事では、2 つの一般的な手法、DATEADD/DATEDIFFchar へのキャストを比較し、それらのパフォーマンス特性を分析します。

メソッドの比較

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。