sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2005 で 2 つの日時フィールドを比較するにはどうすればよいですか?

    質問は不明ですが、期待する行を返さない等価一致を実行しようとしているように見えるので、問題はミリ秒が問題になっていることだと推測しています。ここにはいくつかのアプローチがあります:

    <オール>
  1. CONVERT を使用して両方の値を (varcharetc として) フォーマットします。CPU の負荷が高く、インデックスを使用できません
  2. DATEDIFF/DATEPART を使用して数学を行う - 似ていますが、まったくは異なります 安い
  3. 検索範囲を作成
  4. 3 番目のオプションは、ほとんどの場合、最も効率的です。これは、インデックス作成をうまく利用でき、大量の CPU を必要としないためです。

    たとえば、上記では、精度が秒*であるため、次のように使用します:

    DECLARE @end datetime
    SET @end = DATEADD(ss,1,@p_date)
    

    次に、フォームの WHERE を追加します:

    WHERE column_datetime >= @p_date AND column_datetime < @end
    

    これは、column_datetime にクラスター化インデックスがある場合に最適に機能しますが、column_datetime に非クラスター化インデックスがある場合でも問題なく機能するはずです。

    [*=@p_date にミリ秒が含まれている場合は、DATEADD を介してそれらのミリ秒をトリミングするかどうかをさらに検討する必要があります 、または範囲を狭くするなど]



    1. T-sql-値が整数かどうかを判断します

    2. データなしでクエリから列名を取得する

    3. OracleDBAリアルタイムの質問

    4. サイト全体の設定をデータベースに保存するにはどうすればよいですか?