ホームページ >データベース >mysql チュートリアル >SQL Server で DATETIME 値の時刻部分のみを効率的に比較するにはどうすればよいですか?

SQL Server で DATETIME 値の時刻部分のみを効率的に比較するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-26 01:08:09297ブラウズ

How Can I Efficiently Compare Only the Time Portion of DATETIME Values in SQL Server?

SQL Server での時刻値の比較

日時フィールドに格納された時刻値を比較する場合、日付コンポーネントを次のようにする必要があるかどうかを考慮することが重要です。比較対象に含まれます。提供されたシナリオでは、ユーザーは日付を除く時間部分のみを比較することを目的としています。

CONVERT 関数を使用して時間値を文字列に変換する提案されたクエリは機能する可能性がありますが、非効率的になる可能性があります。より最適な解決策は、SQL Server の日時値の内部浮動小数点表現を活用することです。

時間のみの比較を効率的に実行するには、次のことができます。

  1. 日時を変換するCAST 関数を使用して値を浮動小数点に変換します。
  2. MOD を使用して各浮動小数点 (時間コンポーネント) の小数部を減算します。 Operator.

たとえば、2 つの日時値 @first と @second が指定された場合:

DECLARE @first DATETIME = '2009-04-30 19:47:16.123';
DECLARE @second DATETIME = '2009-04-10 19:47:16.123';

SELECT (
    CAST(@first AS FLOAT) - FLOOR(CAST(@first AS FLOAT))
) - (
    CAST(@second AS FLOAT) - FLOOR(CAST(@second AS FLOAT))
) AS Difference;

このアプローチでは、日付コンポーネントを関与させずに時刻値を直接比較し、正確かつ効率的な結果を提供します。結果。

以上がSQL Server で DATETIME 値の時刻部分のみを効率的に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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