2017-07-12 12 views
1

こんにちは私のwhere句が日付2011年1月1日と3/1/2017を省略したクエリを持っています。しかし、私はSSRSレポートのためにこのクエリを使用したいので、これらのハードコードされたフィールドの代わりに@begdateと@enddateだけになります。この2つの日付のみを省略する方法はありますか?私はあまりにも難しいことを考えていた知っていたssrsの特定の日付を省略するSQLクエリ

 where 
((Scheduled_Time >= '01/01/2014 00:00:00' and Scheduled_Time <= '12/31/2016 23:59:59') --filter out 1/1/2017 
    or (Scheduled_Time >= '01/02/2017 00:00:00' and Scheduled_Time <= '02/28/2017 23:59:59') --filter out 3/1/2017 
    or (Scheduled_Time >= '03/2/2017 00:00:00' and Scheduled_Time <= '06/30/2017 23:59:59')) 

答えて

1

ただ、これらの日付を削除し、あなたのパラメータを使用して...

where cast(Scheduled_Time as date) <> '20170101' 
     and cast(Scheduled_Time as date) <> '20170301' 
     and Scheduled_Time >= @begdate 
     and Scheduled_Time <= @enddate 
+0

は......ありがとうございます。 –

+0

問題はありません@TDang。パフォーマンスが問題になる場合は、> =と<=の最初のメソッドになるはずです。これは、クエリがsargableである間に、明示的な定義と同じ速さであってはならないからです。こことその例です。 https://dba.stackexchange.com/a/34052/95107これを簡潔にするためにこの方法で書きました。 – scsimon

関連する問題