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

時間の部分を無視して、T-SQLで日付を比較します

    これを行う最も合理的な方法は、日時値の時間部分を取り除き、結果を比較することです。日時から時間部分を取り除く最良の方法は、次のようになります。

    cast(current_timestamp as date)    
    

    私は以前、次の2行のいずれかに似たプロセスを使用して提唱していました。

    cast(floor(cast(getdate() as float)) as datetime)
    dateadd(dd,0, datediff(dd,0, getDate()))
    

    しかし、SQLServerにはDateがあります。 時間成分を持たないタイプの場合、これらの手法のいずれかを使用する理由はほとんどありません。

    もう1つ覚えておくべきことは、where句または結合条件のすべての行に対して2つの日時値に対してクエリを実行する必要がある場合でも、クエリが失敗することです。可能であれば、これを何らかの方法で除外して、たとえばビューや計算された列を使用して、可能な限り事前に計算されるようにします。

    最後に、DATEDIFF関数が交差した境界の数を比較することに注意してください。これは、'2009-09-14 11:59:59'の間の日数の日付差を意味します および'2009-09-15 00:00:01' 2秒しか経過していなくても、は1ですが、DATEDIFFは'2009-09-15 00:00:01'の間の日数です。 および'2009-09-15 11:59:59' 86,398秒が経過しても、まだゼロです。そこの時間部分はまったく気にせず、境界だけが気になります。クエリが実行しようとしていることによっては、それを有利に使用できる場合があります。



    1. SELECT COUNT(*)AScount-このカウントの使用方法

    2. PerconaXtraDBクラスターKubernetesオペレーターの概要

    3. sp_prepare/sp_prepexecのユースケース

    4. PHPコードを使用してMySQLデータベースに画像をアップロードする方法