4

SSRS 2008r2 を使用してレポートを生成しています。SQLクエリで次のWHEREステートメントを使用する

WHERE (NonPMJobs.npmJobCreateDate >= @Created_Parameter) AND     
      (NonPMJobs.npmJobCreateDate <= @Created_Parameter2)

のデータ型のパラメーターを使用していますDateTime。次に、ユーザーはカレンダーから日を選択します。@Created_Parameter日付 1 ( ) と日付 2 ( )の間に作成されたジョブの結果を取得したいと考えています@Created_Parameter2

ただし、返される結果には 2 番目の日付 ( ) は含まれません@Created_Parameter2。選択する01/07/2013 - 05/07/2013と、01、02、03、04 が表示されますが、05 は表示されません。01/07/2013 ~ 06/07/2013 を選択すると、01、02、03、04、05 が表示されます。

私は使用してみました:

WHERE (NonPMJobs.npmJobCreateDate BETWEEN @Created_Parameter AND @Created_Parameter2)

しかし、同じ結果が得られます。

ここで何が欠けているのですか? なぜWHEREステートメントが含まれていないのですか? 任意のポインタは非常に高く評価されます。

4

1 に答える 1

7

これについて考える必要があります: a DATETIMElike this: 05/07/20137 月 5 日 (または地域によっては 5 月 7 日)の 1 日が始まる真夜中(いわば 00:00 時間) を意味します。

したがって、これにはその日に発生するイベントは含まれません。

最善の解決策は、使用することです

WHERE (NonPMJobs.npmJobCreateDate >= @Created_Parameter) AND     
      (NonPMJobs.npmJobCreateDate < DATEADD(DAY, 1, @Created_Parameter2))

基本的に、に基づいて翌日よりも小さいものをすべて取得します@Created_Parameter2。したがって、7 月 5 日の場合は、7月 6 日より前の日付になります。これには、7 月 5 日以降のすべてのイベントが含まれます。

于 2013-08-09T10:43:33.740 に答える