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

SQL Server の DateTime 値から時刻コンポーネントを効率的に削除するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-22 10:40:09
オリジナル
422 人が閲覧しました

How to Efficiently Remove the Time Component from a DateTime Value in SQL Server?

日時データの最適化: SQL Server の時刻コンポーネントの削除

課題:

datetime フィールドを操作するには、多くの場合、時刻を除く日付部分を分離する必要があります。この記事では、この一般的な SQL Server タスクの最も効率的な方法を検討します。

推奨されるアプローチ:

さまざまな手法を比較した結果、最も効率的で柔軟なソリューションは次のとおりです。

<code class="language-sql">SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>
ログイン後にコピー

パフォーマンス分析:

この方法は、特に大規模なデータセットで優れたパフォーマンスを一貫して示します。 その固有の柔軟性は、他の日付関連の値の計算にも拡張されます (例: 月の最初の日の決定)。

代替方法と制限事項:

varchar を使用して CONVERT(char(11), GETDATE(), 113) に変換すると、場合によっては許容可能なパフォーマンスが得られますが、潜在的なリスクが伴います。 varchar 変換により、言語/日付形式の不一致が発生する可能性があります。 さらに、この方法には、DATEADD/DATEDIFF アプローチの適応性が欠けています。

SQL Server 2008 以降:

SQL Server 2008 以降のバージョンでは、date への直接キャストという合理化された代替手段が提供されます。 例: CAST(GETDATE() AS DATE)。これにより、プロセスが大幅に簡素化されます。

インデックス作成とパフォーマンスに関する考慮事項:

句内で CAST 関数または WHERE 演算を使用すると、インデックスの使用率に悪影響を及ぼす可能性があります。 最適なクエリ パフォーマンスを維持するには、慎重な計画が不可欠です。

datetime2 の処理:

同じ原則が datetime2 にも適用されます (SQL Server 2008 で導入され、SQL Server 2019 で強化されました)。 以下に例を示します:

<code class="language-sql">DECLARE @datetime2value datetime2 = '02180912 11:45'; -- Year 0218 for demonstration within datetime2 range
DECLARE @datetime2epoch datetime2 = '19000101';

SELECT DATEADD(dd, DATEDIFF(dd, @datetime2epoch, @datetime2value), @datetime2epoch);</code>
ログイン後にコピー

以上がSQL Server の DateTime 値から時刻コンポーネントを効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート