Итак, я делаю программный инструмент, который предупреждает об истечении срока действия 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 использовать в зависимости от сохраненного целого числа? Или есть другой способ сделать это?