SQL Сервер - Как использовать данные в столбце для DATEADD - datepart - PullRequest
0 голосов
/ 05 мая 2020

Я хочу передать данные из столбца переменной / из таблицы как datepart при использовании функции DATEADD. Ниже приведен фрагмент моего кода, в котором я вижу ошибку, как показано ниже.

DECLARE @vchstring VARCHAR(20)
SET @vchstring='month'
SELECT DATEADD(@vchstring,1,GETDATE())

Я получаю эту ошибку:

Msg 1023, уровень 15, состояние 1, строка 104
Для dateadd указан недопустимый параметр 1.

Это может быть дубликат, но я не могу найти никакой информации.

1 Ответ

1 голос
/ 05 мая 2020

SQL Сервер не поддерживает подстановку макросов. Вам нужно будет либо использовать Dynami c SQL, либо вложенный case / IF, либо даже SELECT

Пример

DECLARE @vchstring VARCHAR(20)
SET @vchstring='month'

Select Value
 From  ( values ('year'  ,DATEADD(YEAR   ,1,GETDATE()) ) 
               ,('month' ,DATEADD(MONTH  ,1,GETDATE()) ) 
               ,('day'   ,DATEADD(DAY    ,1,GETDATE()) ) 
               ,('hour'  ,DATEADD(HOUR   ,1,GETDATE()) ) 
               ,('minute',DATEADD(MINUTE ,1,GETDATE()) ) 
       ) A (inc,value)
 Where inc = @vchstring

Returns

Value
2020-06-05 10:09:29.660
...