、このようなもので始まり...近づい
YourDateField Between (Date() -7) AND Date()
は中断されません。このアプローチのもう1つの利点は、クエリーでYourDateFieldのインデックスを使用できる場合にクエリを使用できることです。その場合、dbエンジンは索引を調べて、どの行が基準に一致しているかを見つけ出し、レコード・ソースのすべての行ではなく一致する行のみを読み取ることができます。 (あなたがYourDateFieldにインデックスを持っていない場合、それは無効だ場合は、インデックスを削除することができます。それが大幅にクエリをスピードアップかどうかを確認するために1を追加します。)
逆に条件DatePart()
関数に基づくWHERE使用dbエンジンはクエリのレコードソース内のすべての行を調べます。これは、特にネットワーク接続を介してデータを読み取る必要があるリンクされたテーブルの場合、巨大なテーブルで重要なパフォーマンスのボトルネックになる可能性があります。
:あなたが望むものを誤解しました。前の月曜日に開始した週のために、私はこの条件を使用:
Between Date() - (6 + Weekday(Date(), 2))
AND Date() - Weekday(Date(), 2)
このアプローチは、私が最初に提案し何よりも複雑である間ので、クエリを実行しているときに一度だけ、これらの式を評価しますDBエンジンデータソース内のすべての行に対してDatePart()
を使用する場合よりも、パフォーマンスの改善が可能です。
これは過去7日間かかりますか?すなわち、今は木曜日であれば、それは最後の木 - 水を与える。私はpropably十分に記述的ではなかった。ごめんなさい。私は現在の日にもかかわらず、前のカレンダーの週から月曜日の行を返すことを目指しています。 – Marko