現在の日付または将来の日付に等しいすべてのレコードをフェッチするストアドプロシージャがあります。日付は列targetDateに保存され、datetimeとしてフォーマットされます。対応するWHERE句は次のとおりです。
WHERE A.targetDate >= GETDATE()
一般に私のストアドプロシージャは正常に動作しますが、私の唯一の問題は、すべての日付が次のように保存されるため、targetDateが現在の日付と等しいかどうか、つまり時刻をゼロに設定することです:
2014-02-22 00:00:00.000
WHERE句を変更して、日付のみを考慮し、保存された時間を無視して、時間がすでに過ぎていても現在の日付のレコードを取得するにはどうすればよいですか?
ティム、これに関する助けに感謝します。
への変更:
WHERE A.targetDate >= cast(GETDATE() as date)
編集-targetdateには時刻も含まれているため、はい、両方とも次のようにフォーマットします。
WHERE cast(A.targetDate as date) >= cast(GETDATE() as date)
編集-コメントre:パフォーマンスを与え、試してみてください:
WHERE a.targetdate >= cast(cast(getdate() as date) as datetime)
最終編集でも同じ結果が得られ、targetdateのインデックスを活用する必要があります
次のようにすると、現在の日付が時間なしで表示されます。
SELECT DATEADD(dd,0,DATEDIFF(dd,0,GETDATE()))
これが最終行です。
WHERE A.targetDate >= DATEADD(dd,0, ATEDIFF(dd,0,GETDATE()))