2016-04-11 5 views
0

トランザクションテーブルから日付範囲または60日の間にあるデータを取得しようとしているクエリがあります。開始日。日付範囲を使用して日付を返す方法定義された日数より古いものを含める

ここが私の言いたいことです。表中の

データ:私が何をしたいのですがどのような

select * 
from Transactions 

Created  TransactionID 
12/1/16   1 
12/5/16   2 
1/1/15   3 
3/1/16   4 
4/1/16   5 
4/2/16   6 
4/3/16   7 

は、4/1と4/4の間でデータを返しています。または4/1よりも60日古いもの。したがって、出力は次のようになります。

12/1/16   1 
12/5/16   2 
1/1/16   3 
4/1/16   5 
4/2/16   6 
4/3/16   7 

60日以上経過していないので、3/1/16を省略してください。

私は最初にDateDiffを使うことができたと思っていましたが、開始日は60日です。

Select * 
From Transactions 
where created between Datediff(dd,-60,@startdate) and @enddate 

これは戻って、私が知っている理由:

3/1/16   4 
4/1/16   5 
4/2/16   6 
4/3/16   7 

どのように私はこれを達成することができますか?

答えて

3

1)dateaddを使用し、@startdateから60日を引く。 2)ご使用の条件にorを使用してください。

Select * 
From Transactions 
where created < dateadd(dd,-60,@startdate) 
or created between '2016-04-01' and '2016-04-04' 
+0

Erm。私は明らかにこれを思っていた。それが助けになる! – Shmewnix

関連する問題