日付/時刻パラメーターDATEFIRSTがあり、 DateCalledの値が DATEFIRST の 3営業日以内である行を選択するとします 。これらは、各パラメーター値に必要な最新の日付であることを意味すると解釈します...
DATEFIRST 3 workdays previous
--------------- -------------------
Mon, 01/28/2013 Wed, 01/23/2013
Tue, 01/29/2013 Thu, 01/24/2013
Wed, 01/30/2013 Fri, 01/25/2013
Thu, 01/31/2013 Mon, 01/28/2013
Fri, 02/01/2013 Tue, 01/29/2013
Sat, 02/02/2013 Tue, 01/29/2013
Sun, 02/03/2013 Tue, 01/29/2013
次のクエリを Access 2007 でテストしました。上記の DATEFIRST パターンに一致する結果が返されます。
PARAMETERS DATEFIRST DateTime;
SELECT *
FROM your_table AS y
WHERE y.DateCalled < DateAdd(
'd',
Switch(
Weekday([DATEFIRST])=1,-4,
Weekday([DATEFIRST])=2,-4,
Weekday([DATEFIRST])=3,-4,
Weekday([DATEFIRST])=4,-4,
Weekday([DATEFIRST])=5,-2,
Weekday([DATEFIRST])=6,-2,
Weekday([DATEFIRST])=7,-3
),
[DATEFIRST]
);
あなたのコメントに基づいて、私はあなたの意図を誤解したと思います。パラメータクエリが必要ないようです。代わりにDateCalled
、クエリが実行される日付の 3 日前にフィルタを適用する必要があります。もしそうなら、句を破棄し、 Access の関数を にPARAMETERS
置き換えます。Date()
[DATEFIRST]
SELECT *
FROM your_table AS y
WHERE y.DateCalled < DateAdd(
'd',
Switch(
Weekday(Date())=1,-4,
Weekday(Date())=2,-4,
Weekday(Date())=3,-4,
Weekday(Date())=4,-4,
Weekday(Date())=5,-2,
Weekday(Date())=6,-2,
Weekday(Date())=7,-3
),
Date()
);