SQL Server での時間値の比較
データベース クエリでの時間値の比較は、特に、日付または時刻の形式。目的が時間部分のみを比較することである場合、正確な結果を得るには特定のテクニックが必要です。
問題ステートメント
範囲内の時間値を比較しようとしています。 SQL クエリの datetime フィールドを使用しているため、アプローチが正しいかどうかわかりません。具体的には、日付コンポーネントに関係なく、08:00:00 が 07:30:00 より小さいか大きいかを判断します。
非効率的な解決策
最初のアプローチでは、convert() 関数を使用して startHour 値を datetime に変換し、それらを比較します。この方法では望ましい結果が得られる可能性がありますが、行ごとに文字列変換が必要となるため非効率になる可能性があります。
効率的な時間比較
効率的な時間比較を行うには、次のようにします。 SQL Server の日時値の固有の浮動小数点表現を利用することをお勧めします。ここでは、時刻値を比較するためのステップバイステップのガイドを示します。
サンプル クエリ
このアプローチを説明するために次のクエリを考えてみましょう:
declare @first datetime set @first = '2009-04-30 19:47:16.123' declare @second datetime set @second = '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
このクエリは次のように計算します。 2 つの日時値の時間部分の差。これらの時間コンポーネントを直接比較できます。
以上がSQL Server で日付を考慮せずに時間値を効率的に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。