あなたの目的のために、IIFステートメントは必要ないと思います-これは、パラメーターが何もない場合、パラメーターの値を返すだけです。
これにより、キー操作は のままになりますDateAdd("d", -7-(WeekDay(Today(),7))+8, Today())
。
これが何をするかというと、今日に日を追加するということです - これは-7+8=1 から-7-(WeekDay(Today(),7))+8
単純化できます。1-(WeekDay(Today(),7))
ドキュメントhereを見ると、関数は 1、2、3 の値に対してのみ定義されているため、return_type は無効に見えます。現在機能している場合は、引き続き機能しない可能性があります。
これはDateAdd("d", 1 - WeekDay(Today(), 1), Today())
、今日が日曜日のときに最新の日曜日を今日にしたい場合、または今日が日曜日のDateAdd("d", WeekDay(Today(), 2)), Today())
ときに最新の日曜日が先週の場合に使用する場合に常に機能します。
どちらの場合も、Today() への 2 つの呼び出しが数ミリ秒離れているため、真夜中頃に間違った応答が生成される可能性があることに注意してください。絶対に正しいためには、次のようにする必要があります。
Declare @DateToCheck datetime=Today()
Select DateAdd('d', 1 - WeekDay(@DateToCheck, 1), @DateToCheck)