よし、期限が切れる CRB を警告するソフトウェア ツールをやっている。有効期限の間隔は、プログラムのユーザーによって決定されます。
現在、SQL Server 2008 を使用しています。そのため、この有効期限外のすべてのレコードを取得する SQL ステートメントを実行しようとしています。以下は、私が達成しようとしているコンセプトです。
Declare @ExpiryType as int -- (0=Days,1=Weeks,2=Months,3=Years)
Declare @ExpiryValue as int -- Interval of expiry
Declare @DateOfIssue as date -- Date of last CRB check
SELECT * FROM tblDBS_Details
WHERE DATEADD(@ExpiryType, @ExpiryValue, @DateOfIssue) <= GETDATE()
ご覧のとおり、テーブルには有効期限の間隔の種類 (日、週、月、年)、間隔の値、および間隔を追加する必要がある日付が含まれています。
DATEADD 関数の最初のパラメーターで、整数ではなく DATEPART が予期されるため、エラーが発生します。格納された整数に応じて使用する DATEPART を決定する方法はありますか? または、これを行う別の方法はありますか?