ホームページ >データベース >mysql チュートリアル >SQL Server の DateTime フィールドから時刻コンポーネントを効率的に削除するにはどうすればよいですか?
チャレンジ:
大規模な SQL Server データセットを処理するには、多くの場合、日時フィールドから時刻コンポーネントを効率的に削除する必要があります。 次の 2 つの一般的な手法が頻繁に使用されます。
DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
CAST(CONVERT(CHAR(11), getdate(), 113) AS DATETIME)
最適なアプローチ:
パフォーマンス ベンチマークでは、DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
が最も効率的な方法として常に示されています。 このアプローチ:
最新の SQL Server バージョン (2008 以降) は、優れた代替手段を提供します。
CAST(getdate() AS DATE)
は日時を日付データ型に直接変換し、時間コンポーネントを削除する必要を排除します。datetime2
フィールドの場合、DATEADD
メソッドは引き続き適用可能ですが、エポック値を調整する必要があります:<code class="language-sql">DECLARE @datetime2value datetime2 = '02180912 11:45'; -- Year 0218 within datetime2 DECLARE @datetime2epoch datetime2 = '19000101'; SELECT DATEADD(dd, DATEDIFF(dd, @datetime2epoch, @datetime2value), @datetime2epoch);</code>
重要な考慮事項:
WHERE
句内でこれらの関数を使用すると、インデックスの使用率に悪影響を及ぼす可能性があります。 慎重な検討が必要です。CAST(CHAR())
メソッドの文字変換への依存により、言語設定と日付形式に関連する潜在的な脆弱性が生じます。FLOAT
を使用しないでください。これは大規模なデータセットには最適ではない可能性があります。以上がSQL Server の DateTime フィールドから時刻コンポーネントを効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。