まず、where 句で DateDiff 関数を使用して avpod を使用することをお勧めします。代わりに、目的のカットオフ日付を計算し、where 句内の日付列で計算を使用します。これはより効率的です。
WHERE DATEDIFF(day, date, getdate() ) <= #url.d#
あなたは次のようなものを持っているでしょう
WHERE date >= @cutoffDate
ここで、@cutoffDate は #url.d# に基づいて計算された日付です
さて、正しい締め切り日をつかむことについて。私の仮定では、通常の状況では、リクエストから返される記事があると思います。それ以外の場合は、最新の日付から記事を取得するだけです。したがって、私がとるアプローチは、計算されたカットオフ日付の最も古いものを取得することです (#url.d# と最新の記事の日付に基づいています。次のようなもの)。
-- @urld == #url.d
-- compute the cutoff date as the OLDEST of the most recent article and
-- the date based on #url.d
declare @cutoff datetime
select @cutoff = DateAdd(dd,-1*@urld,GetDate())
select @cutoff
select @cutoff = min(cutoffDate)
from
(SELECT Max(date) as cutoffDate from News
UNION
select @cutoff) Cutoff
-- grab the articles with dates that are more recent than the cutoff date
select *
from News
WHERE date >= @cutoff
また、日付を真夜中に丸めたいと思うかもしれません (ここでは行いませんでした)。これはマルチクエリのアプローチであり、おそらく単一のストアド プロシージャで実装する必要があります...これが探しているものである場合。
プロジェクト頑張ってください!