あなたが実際に何を目指しているのかを推測しなければならないとしたら、それGETDATE()
はあなたが比較に使用するために から 2 時間または 2 日を差し引きたかったということです。
ここにあなたが目指していると思うものがあります:
SELECT foo,
bar,
test
FROM table
WHERE bar = 1 AND
(
(foo = 0 AND DATEADD(day,-2, GETDATE()) < test)
OR
(foo<>0 AND DATEADD(hour,-2,GETDATE()) < test)
)
DATEDIFF
あなたが本当にそれらの電話を意図していたとは思えません。たとえば、今日 (2013 年 7 月 3 日) の場合、この式は次のようになります。
select CAST(DATEDIFF(dd,getdate(),2) as datetime)
1786-07-03
1を生成します。test
それが でdatetime
あり、暗黙の変換が実行されていると想定しています。そうでない場合でも、 の数値は常に大きな負の数になります ( 20 世紀より前の値を返すDATEDIFF(dd,getdate(),2)
マシンで実行されない限り、または実行されるまで)GETDATE()
1奇妙なことに、7 月 3 日は、結果が同じ月と日の番号を持つ唯一の日だと思います。