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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-28 01:32:11178ブラウズ

How to Efficiently Compare Only Time Values in SQL Server?

SQL Server での時間の比較

SQL Server で時間値を比較する場合は、日付を無視して時間コンポーネントのみを考慮することが重要です。これを実現するには、日時フィールド間の標準的な比較とは若干異なるアプローチが必要です。

時間値を効率的に比較するには、SQL Server が日付を浮動小数点数として格納するという事実を利用できます。小数点の前の数字は日付を表し、その後の数字は時間を表します。

例:

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

この例では、両方の @ の日付部分がfirst と @second は、floor() を使用して各浮動小数点表現の整数部分を減算することによって破棄されます。結果は時間差を表す小数値であり、比較に使用できます。

説明:

  • cast(@first as float) - Floor(cast(@first as float)) は、@first の時間部分を浮動小数点形式で計算します。
  • cast(@second as float) - Floor(cast(@second as float)) は、@second に対しても同じことを行います。
  • 時間部分を減算すると、2 つの時間の差が得られます。

このメソッドは、不要なデータ変換を避けるため、日時値を比較用の文字列に変換します。

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

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