ОК, поэтому я делаю программный инструмент, который предупреждает о CRB, срок действия которого истекает. Интервалы истечения определяются пользователем программы.Определить DATEPART по значению int в SQL
В настоящее время я использую 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 использовать в зависимости от сохраненного целого? Или есть другой способ сделать это?
Это была помощь достаточно, высоко оценили! – Weebie